diff --git a/evdns.c b/evdns.c index 66a3bff3..b196229b 100644 --- a/evdns.c +++ b/evdns.c @@ -662,6 +662,7 @@ request_finished(struct request *const req, struct request **head, int free_hand req->ns->requests_inflight == 0 && req->base->disable_when_inactive) { event_del(&req->ns->event); + evtimer_del(&req->ns->timeout_event); } if (!req->request_appended) { @@ -2198,9 +2199,10 @@ evdns_request_transmit_to(struct request *req, struct nameserver *server) { ASSERT_VALID_REQUEST(req); if (server->requests_inflight == 1 && - req->base->disable_when_inactive && - event_add(&server->event, NULL) < 0) { - return 1; + req->base->disable_when_inactive) { + if (event_add(&server->event, NULL) < 0 || + evtimer_add(&req->ns->timeout_event, &req->base->global_nameserver_probe_initial_timeout) < 0) + return 1; } r = sendto(server->socket, (void*)req->request, req->request_len, 0,