diff --git a/src/getdns/getdns_extra.h.in b/src/getdns/getdns_extra.h.in index af53a5f2..a6e82c6f 100644 --- a/src/getdns/getdns_extra.h.in +++ b/src/getdns/getdns_extra.h.in @@ -77,11 +77,11 @@ extern "C" { #define GETDNS_CONTEXT_CODE_PUBKEY_PINSET 621 #define GETDNS_CONTEXT_CODE_PUBKEY_PINSET_TEXT "Change related to getdns_context_set_pubkey_pinset" #define GETDNS_CONTEXT_CODE_ROUND_ROBIN_UPSTREAMS 622 -#define GETDNS_CONTEXT_CODE_ROUND_ROBIN_UPSTREAMS_TEXT "Change related to getdns_context_set_pubkey_pinset" +#define GETDNS_CONTEXT_CODE_ROUND_ROBIN_UPSTREAMS_TEXT "Change related to getdns_context_set_round_robin_upstreams" #define GETDNS_CONTEXT_CODE_TLS_BACKOFF_TIME 623 -#define GETDNS_CONTEXT_CODE_TLS_BACKOFF_TIME_TEXT "Change related to getdns_context_set_pubkey_pinset" +#define GETDNS_CONTEXT_CODE_TLS_BACKOFF_TIME_TEXT "Change related to getdns_context_set_tls_backoff_time" #define GETDNS_CONTEXT_CODE_TLS_CONNECTION_RETRIES 624 -#define GETDNS_CONTEXT_CODE_TLS_CONNECTION_RETRIES_TEXT "Change related to getdns_context_set_pubkey_pinset" +#define GETDNS_CONTEXT_CODE_TLS_CONNECTION_RETRIES_TEXT "Change related to getdns_context_set_tls_connection_retries" /** @} */ diff --git a/src/stub.c b/src/stub.c index 6736885e..8c0b897a 100644 --- a/src/stub.c +++ b/src/stub.c @@ -32,6 +32,13 @@ */ #include "config.h" +#ifdef USE_POLL_DEFAULT_EVENTLOOP +# ifdef HAVE_SYS_POLL_H +# include +# else +# include +# endif +#endif #include "debug.h" #include #include @@ -626,7 +633,15 @@ upstream_idle_timeout_cb(void *userarg) static void upstream_setup_timeout_cb(void *userarg) { + int ret; getdns_upstream *upstream = (getdns_upstream *)userarg; +#ifdef USE_POLL_DEFAULT_EVENTLOOP + struct pollfd fds; +#else + fd_set fds; + struct timeval tval; +#endif + DEBUG_STUB("%s %-35s: FD: %d\n", STUB_DEBUG_CLEANUP, __FUNC__, upstream->fd); /* Clean up and trigger a write to let the fallback code to its job */ @@ -636,14 +651,17 @@ upstream_setup_timeout_cb(void *userarg) * TCP SYN and doesn't do a reset (as is the case with e.g. 8.8.8.8@853). * For that case the socket never becomes writable so doesn't trigger any * callbacks. If so then clear out the queue in one go.*/ - int ret; - fd_set fds; +#ifdef USE_POLL_DEFAULT_EVENTLOOP + fds.fd = upstream->fd; + fds.events = POLLOUT; + ret = poll(&fds, 1, 0); +#else FD_ZERO(&fds); - FD_SET(FD_SET_T upstream->fd, &fds); - struct timeval tval; + FD_SET((int)(upstream->fd), &fds); tval.tv_sec = 0; tval.tv_usec = 0; ret = select(upstream->fd+1, NULL, &fds, NULL, &tval); +#endif if (ret == 0) { DEBUG_STUB("%s %-35s: FD: %d Cleaning up dangling queue\n", STUB_DEBUG_CLEANUP, __FUNC__, upstream->fd);