瀏覽代碼

Fix one case of bug 929.

svn:r18683
Nick Mathewson 16 年之前
父節點
當前提交
27c3b43817
共有 2 個文件被更改,包括 9 次插入2 次删除
  1. 4 0
      ChangeLog
  2. 5 2
      src/or/eventdns.c

+ 4 - 0
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

+ 5 - 2
src/or/eventdns.c

@@ -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);
 	}
 }