From: Nick Mathewson Date: Sun, 5 Apr 2009 17:50:18 +0000 (+0000) Subject: Fix a double-delete on the request timeout event. Port from Tor. X-Git-Tag: release-2.0.1-alpha~51 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f3c0983c0e1779f9d690830b3b1c2a0e1c94883;p=libevent Fix a double-delete on the request timeout event. Port from Tor. svn:r1138 --- diff --git a/evdns.c b/evdns.c index bad39908..bd8dbf3f 100644 --- a/evdns.c +++ b/evdns.c @@ -1972,13 +1972,13 @@ evdns_request_timeout_callback(evutil_socket_t fd, short events, void *arg) { nameserver_failed(req->ns, "request timed out."); } - (void) evtimer_del(&req->timeout_event); if (req->tx_count >= req->base->global_max_retransmits) { /* this request has failed */ reply_callback(req, 0, DNS_ERR_TIMEOUT, NULL); request_finished(req, &REQ_HEAD(req->base, req->trans_id)); } else { /* retransmit it */ + (void) evtimer_del(&req->timeout_event); evdns_request_transmit(req); } } @@ -2471,6 +2471,7 @@ request_submit(struct evdns_request *const req) { void evdns_cancel_request(struct evdns_base *base, struct evdns_request *req) { + /* XXX Does anything ever free the request */ if (req->ns) { /* remove from inflight queue */ evdns_request_remove(req, &REQ_HEAD(base, req->trans_id));