diff --git a/test/regress_dns.c b/test/regress_dns.c index cd6369c7..5743dc7c 100644 --- a/test/regress_dns.c +++ b/test/regress_dns.c @@ -862,6 +862,7 @@ end: /* === Test for bufferevent_socket_connect_hostname */ static int total_connected_or_failed = 0; +static int total_n_accepted = 0; static struct event_base *be_connect_hostname_base = NULL; /* Implements a DNS server for the connect_hostname test and the @@ -995,7 +996,11 @@ nil_accept_cb(struct evconnlistener *l, evutil_socket_t fd, struct sockaddr *s, { int *p = arg; (*p)++; + ++total_n_accepted; /* don't do anything with the socket; let it close when we exit() */ + if (total_n_accepted >= 3 && total_connected_or_failed >= 5) + event_base_loopexit(be_connect_hostname_base, + NULL); } struct be_conn_hostname_result { @@ -1015,14 +1020,14 @@ be_connect_hostname_event_cb(struct bufferevent *bev, short what, void *ctx) if ((what & BEV_EVENT_CONNECTED) || (what & BEV_EVENT_ERROR)) { int r; - ++total_connected_or_failed; - TT_BLATHER(("Got %d connections or errors.", total_connected_or_failed)); if ((r = bufferevent_socket_get_dns_error(bev))) { got->dnserr = r; TT_BLATHER(("DNS error %d: %s", r, evutil_gai_strerror(r))); - } - if (total_connected_or_failed >= 5) + } ++total_connected_or_failed; + TT_BLATHER(("Got %d connections or errors.", total_connected_or_failed)); + + if (total_n_accepted >= 3 && total_connected_or_failed >= 5) event_base_loopexit(be_connect_hostname_base, NULL); }