diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-05-02 17:12:23 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-05-02 17:12:23 -0400 |
commit | 4b70286ef1413bd870a93edc7d93e6d24b809e93 (patch) | |
tree | 8cbac697ca97a942d748d4735f5a77b03de0b541 /evdns.c | |
parent | 9fbfe9b94838cea245472b5619dc4a111fb0dd30 (diff) | |
parent | cecb111bcd9af40a14a456fb07e3be4059fd46f0 (diff) | |
download | libevent-4b70286ef1413bd870a93edc7d93e6d24b809e93.tar.gz |
Merge remote-tracking branch 'origin/patches-2.0'
Conflicts:
ChangeLog
README
evdns.c
sample/dns-example.c
Diffstat (limited to 'evdns.c')
-rw-r--r-- | evdns.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -2140,9 +2140,8 @@ evdns_server_request_get_requesting_addr(struct evdns_server_request *req_, stru static void evdns_request_timeout_callback(evutil_socket_t fd, short events, void *arg) { struct request *const req = (struct request *) arg; -#ifndef EVENT__DISABLE_THREAD_SUPPORT struct evdns_base *base = req->base; -#endif + (void) fd; (void) events; @@ -2157,11 +2156,19 @@ evdns_request_timeout_callback(evutil_socket_t fd, short events, void *arg) { if (req->tx_count >= req->base->global_max_retransmits) { /* this request has failed */ + log(EVDNS_LOG_DEBUG, "Giving up on request %p; tx_count==%d", + arg, req->tx_count); reply_schedule_callback(req, 0, DNS_ERR_TIMEOUT, NULL); request_finished(req, &REQ_HEAD(req->base, req->trans_id), 1); } else { /* retransmit it */ + struct nameserver *new_ns; + log(EVDNS_LOG_DEBUG, "Retransmitting request %p; tx_count==%d", + arg, req->tx_count); (void) evtimer_del(&req->timeout_event); + new_ns = nameserver_pick(base); + if (new_ns) + req->ns = new_ns; evdns_request_transmit(req); } EVDNS_UNLOCK(base); @@ -2231,7 +2238,7 @@ evdns_request_transmit(struct request *req) { default: /* all ok */ log(EVDNS_LOG_DEBUG, - "Setting timeout for request %p", req); + "Setting timeout for request %p, sent to nameserver %p", req, req->ns); if (evtimer_add(&req->timeout_event, &req->base->global_timeout) < 0) { log(EVDNS_LOG_WARN, "Error from libevent when adding timer for request %p", @@ -2489,8 +2496,8 @@ evdns_nameserver_add_impl_(struct evdns_base *base, const struct sockaddr *addre goto out2; } - log(EVDNS_LOG_DEBUG, "Added nameserver %s", - evutil_format_sockaddr_port_(address, addrbuf, sizeof(addrbuf))); + log(EVDNS_LOG_DEBUG, "Added nameserver %s as %p", + evutil_format_sockaddr_port_(address, addrbuf, sizeof(addrbuf)), ns); /* insert this nameserver into the list of them */ if (!base->server_head) { |