summaryrefslogtreecommitdiff
path: root/evdns.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2012-05-02 17:12:23 -0400
committerNick Mathewson <nickm@torproject.org>2012-05-02 17:12:23 -0400
commit4b70286ef1413bd870a93edc7d93e6d24b809e93 (patch)
tree8cbac697ca97a942d748d4735f5a77b03de0b541 /evdns.c
parent9fbfe9b94838cea245472b5619dc4a111fb0dd30 (diff)
parentcecb111bcd9af40a14a456fb07e3be4059fd46f0 (diff)
downloadlibevent-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.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/evdns.c b/evdns.c
index 9af41c3b..41d8b6b2 100644
--- a/evdns.c
+++ b/evdns.c
@@ -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) {