a few fixes for bug 463. needs a changelog. might need more fixes.

svn:r10849
This commit is contained in:
Roger Dingledine 2007-07-17 02:53:17 +00:00
parent ad45ddfb07
commit ccfda2e3a3

View File

@ -536,8 +536,8 @@ dns_resolve(edge_connection_t *exitconn)
r = dns_resolve_impl(exitconn, is_resolve, oncirc, &hostname); r = dns_resolve_impl(exitconn, is_resolve, oncirc, &hostname);
switch (r) { switch (r) {
case 1: case 1:
/* We got an answer without a lookup. (Either the answer was /* We got an answer without a lookup -- either the answer was
* cached, or it was obvious (like an IP address).)*/ * cached, or it was obvious (like an IP address). */
if (is_resolve) { if (is_resolve) {
/* Send the answer back right now, and detach. */ /* Send the answer back right now, and detach. */
if (hostname) if (hostname)
@ -578,7 +578,7 @@ dns_resolve(edge_connection_t *exitconn)
// If it's marked for close, it's on closeable_connection_lst in // If it's marked for close, it's on closeable_connection_lst in
// main.c. If it's on the closeable list, it will get freed from // main.c. If it's on the closeable list, it will get freed from
// main.c. -NM // main.c. -NM
// "<armadev> If that's true, there are other bugs arond, where we // "<armadev> If that's true, there are other bugs around, where we
// don't check if it's marked, and will end up double-freeing." // don't check if it's marked, and will end up double-freeing."
} }
break; break;
@ -822,9 +822,12 @@ dns_cancel_pending_resolve(const char *address)
strlcpy(search.address, address, sizeof(search.address)); strlcpy(search.address, address, sizeof(search.address));
resolve = HT_FIND(cache_map, &cache_root, &search); resolve = HT_FIND(cache_map, &cache_root, &search);
if (!resolve || resolve->state != CACHE_STATE_PENDING) { if (!resolve)
log_notice(LD_BUG,"Address %s is not pending. Dropping.", return;
escaped_safe_str(address));
if(resolve->state != CACHE_STATE_PENDING) {
log_notice(LD_BUG,"Address %s is not pending (state %d). Dropping.",
escaped_safe_str(address), resolve->state);
return; return;
} }