Also minor fixes in getdns_query:
- spurious semicolon (caused build warning)
- build warning for initialised variable
- have getdns_query honour the CLASS in the incoming query
And reset to the async loop when sync request was finished, rescheduling the upstream->event.
Note that finished_event is scheduled against the async loop always.
* default_eventloop was prototyped in getdns_query and is still in there as my_eventloop
* It interfaces directly with the scheduling primitives of getdns.
* It can operate entirely from stack and does not have to do
any memory allocations or deallocations.
* Adapted configure.ac to allow libunbound to be linked with Windows
(with the removal of winsock_event.c we have no symbol clashed anymore)
* Added STUB_TCP_WOULDBLOCK return code in stub_resolving helper functions,
to anticipate dealing with edge triggered event loops (versus level triggered). (i.e. Windows)
We used to only have hostnames available. now we have pubkey_pinsets
available as well.
We want upstream->tls_auth_failed to be 1 when any authentication
mechanism we've been asked for fails (and also when we haven't been
given any authentication mechanism at all).
if the upstream is configured to allow fallback, this will not be a
fatal error, but it will still be checked.
Future work:
* verify any certs higher in the chain than the end-entity cert
* deal with raw public keys
* in the fallback case, report to the user whether the pinset match failed
We do this by associating a getdns_upstream object with the SSL object
handled by that upstream.
This allows us to collapse the verification callback code to a single
function.
Note that if we've agreed that fallback is ok, we are now willing to
accept *any* cert verification error, not just HOSTNAME_MISMATCH.
This is fine, because the alternative is falling back to cleartext,
which would be worse.
We also always set SSL_VERIFY_PEER, since we might as well try to do
so; we'll drop the verification error ourselves if we know we're OK
with falling back.