if dns resolve is valid, but our exit policy rejects it or

the connect attempt fails immediately, we were trying to
double-remove it from the dns pending list.

i think this might have been The Bug.
(thanks weasel!)


svn:r1587
This commit is contained in:
Roger Dingledine
2004-04-09 21:06:14 +00:00
parent a78a9b67a3
commit 39b223af74
+2 -2
View File
@@ -376,9 +376,9 @@ static void dns_found_answer(char *address, uint32_t addr, char outcome) {
pend = resolve->pending_connections;
assert_connection_ok(pend->conn,time(NULL));
pend->conn->addr = resolve->addr;
/* prevent double-remove */
pend->conn->state = EXIT_CONN_STATE_RESOLVEFAILED;
if(resolve->state == CACHE_STATE_FAILED) {
/* prevent double-remove */
pend->conn->state = EXIT_CONN_STATE_RESOLVEFAILED;
pendconn = pend->conn; /* don't pass complex things to the
connection_mark_for_close macro */
connection_mark_for_close(pendconn, END_STREAM_REASON_RESOLVEFAILED);