aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/or/dns.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 22fada7389..3d2660c352 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -55,6 +55,11 @@ Changes in version 0.2.0.8-alpha - 2007-??-??
- On some platforms, accept() can return a broken address. Detect
this more quietly, and deal accordingly. (Fixes bug 483.)
+ o Minor bugfixes (DNS):
+ - It's not actually an error to find a non-pending entry in the DNS
+ cache when canceling a pending resolve. Don't log unless stuff
+ is fishy. Resolves bug 463.
+
o Code simplifications and refactoring:
- Make a bunch of functions static. Remove some dead code.
- Pull out about a third of the really big routerlist.c; put it in a
diff --git a/src/or/dns.c b/src/or/dns.c
index 64cfcb024e..7c52d56f85 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -836,8 +836,15 @@ dns_cancel_pending_resolve(const char *address)
return;
if (resolve->state != CACHE_STATE_PENDING) {
- log_notice(LD_BUG,"Address %s is not pending (state %d). Dropping.",
- escaped_safe_str(address), resolve->state);
+ /* We can get into this state if we never actually created the pending
+ * resolve, due to finding an earlier cached error or something. Just
+ * ignore it. */
+ if (resolve->pending_connections) {
+ log_warn(LD_BUG,
+ "Address %s is not pending but has pending connections!",
+ escaped_safe_str(address));
+ tor_fragile_assert();
+ }
return;
}