]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fix one case of bug 929.
authorNick Mathewson <nickm@torproject.org>
Mon, 23 Feb 2009 20:04:51 +0000 (20:04 +0000)
committerNick Mathewson <nickm@torproject.org>
Mon, 23 Feb 2009 20:04:51 +0000 (20:04 +0000)
svn:r18683

ChangeLog
src/or/eventdns.c

index fa2037c4cd11df9a05a57a4e1163124c5e78085a..efd4b3535ea73fb6996f44b29c5380c2bdc97c18 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -32,6 +32,10 @@ Changes in version 0.2.1.13-????? - 2009-02-??
       circuit.  Patch from lark.
     - When we erroneously receive two EXTEND cells for the same circuit ID
       on the same connection, drop the second.  Patch from lark.
+    - Fix a crash that occurs on exit nodes when a nameserver request
+      timed out.  Bugfix on 0.1.2.1-alpha; our CLEAR debugging code
+      had been suppressing the bug since 0.1.2.10-alpha.  Partial fix
+      for bug 929.
 
   o Minor features:
     - On Linux, use the prctl call to re-enable core dumps when the user
index 4c50a109f5a071fa4b4e2a78a56740bffafd286a..63851483f38d701bb04ec2c1e780e22e4aa7503f 100644 (file)
@@ -2016,14 +2016,17 @@ evdns_request_timeout_callback(int fd, short events, void *arg) {
                nameserver_failed(req->ns, "request timed out.");
        }
 
-       del_timeout_event(req);
-       CLEAR(&req->timeout_event);
        if (req->tx_count >= global_max_retransmits) {
                /* this request has failed */
                reply_callback(req, 0, DNS_ERR_TIMEOUT, NULL);
                request_finished(req, &req_head);
        } else {
                /* retransmit it */
+               /* Stop waiting for the timeout.  No need to do this in
+                * request_finished; that one already deletes the timeout event.
+                * XXXX021 port this change to libevent. */
+               del_timeout_event(req);
+               CLEAR(&req->timeout_event);
                evdns_request_transmit(req);
        }
 }