aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2011-04-21 13:39:00 -0400
committerNick Mathewson <nickm@torproject.org>2011-04-21 13:39:00 -0400
commite98583594d897ac32745061143e565c6f4b45f97 (patch)
treebe565d2405eba93a8285ab6f301d4bc955ebacc9
parentdfc9c6a0f9c0488e437dfbf1181041ca0e194f1d (diff)
downloadtor-e98583594d897ac32745061143e565c6f4b45f97.tar.gz
tor-e98583594d897ac32745061143e565c6f4b45f97.zip
Fix a bug in removing DNSPort requests from their circular list
Under heavy load, this could result in an assertion failure. Fix for bug 2933; bugfix on 0.2.0.10-alpha.
-rw-r--r--changes/bug29334
-rw-r--r--src/or/eventdns.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/changes/bug2933 b/changes/bug2933
new file mode 100644
index 0000000000..7aaf526112
--- /dev/null
+++ b/changes/bug2933
@@ -0,0 +1,4 @@
+ o Minor bugfixes
+ - Fix an uncommon assertion failure when running with DNSPort under
+ heavy load. Fixes bug 2933; bugfix on 2.0.1-alpha.
+
diff --git a/src/or/eventdns.c b/src/or/eventdns.c
index a889e803ed..2777f90989 100644
--- a/src/or/eventdns.c
+++ b/src/or/eventdns.c
@@ -1949,7 +1949,7 @@ server_request_free(struct server_request *req)
if (req->port) {
if (req->port->pending_replies == req) {
- if (req->next_pending)
+ if (req->next_pending && req->next_pending != req)
req->port->pending_replies = req->next_pending;
else
req->port->pending_replies = NULL;