libcli/dns: Time out requests after a while
authorKai Blin <kai@samba.org>
Sat, 13 Oct 2012 00:09:57 +0000 (02:09 +0200)
committerJeremy Allison <jra@samba.org>
Tue, 16 Oct 2012 10:58:31 +0000 (12:58 +0200)
Time out UDP requests after DNS_REQUEST_TIMEOUT seconds. Currently set
to 2 seconds.

This should fix bug #8878.

Signed-off-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Oct 16 12:58:32 CEST 2012 on sn-devel-104

libcli/dns/dns.c

index da65ce4c4ffa951d9d3a8619c3ceac921b5f415a..43e1c4e0c79c47f94b8e57bf4292407681e540c3 100644 (file)
@@ -38,6 +38,8 @@ struct dns_udp_request_state {
        size_t reply_len;
 };
 
+#define DNS_REQUEST_TIMEOUT 2
+
 /* Declare callback functions used below. */
 static void dns_udp_request_get_reply(struct tevent_req *subreq);
 static void dns_udp_request_done(struct tevent_req *subreq);
@@ -92,6 +94,12 @@ struct tevent_req *dns_udp_request_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
 
+       if (!tevent_req_set_endtime(req, ev,
+                               timeval_current_ofs(DNS_REQUEST_TIMEOUT, 0))) {
+               return tevent_req_post(req, ev);
+       }
+
+
        tevent_req_set_callback(subreq, dns_udp_request_get_reply, req);
        return req;
 }