Browse Source

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

Roger Dingledine 21 years ago
parent
commit
23c193c065
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/or/dns.c

+ 2 - 2
src/or/dns.c

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