Now that TunnelKit uses sessionConfiguration.hostname to set
.serverAddress, it must be set no matter what.
If hostname is nil, serverAddress is set to
resolvedAddresses.first, which for host profiles is always nil.
Also reorder provider code.
Mitigates a potential issue with randomizeEndpoint where TCP
endpoints might be picked with equal probability, resulting in
poor performance out of the box.
Let the user pick TCP endpoints manually.
Misconfigured profiles must fall back to a consistent state, this
is a programming error.
- provider.pool: fall back to default pool (should always be there)
- provider.preset: why would one remove a preset?
- host.endpointProtocols: .ovpn with no remotes shouldn't get this far
Not always the case, but PIA certainly requires them. Will make it
an infrastructure option later. Only require credentials as a
configuration check, everything else has defaults.