diff options
Diffstat (limited to 'src/or/dns.c')
-rw-r--r-- | src/or/dns.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/or/dns.c b/src/or/dns.c index fad3af1a5..cfa395610 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -378,14 +378,16 @@ static void dns_found_answer(char *address, uint32_t addr, char outcome) { assert_connection_ok(pend->conn,time(NULL)); pend->conn->addr = resolve->addr; - /* prevent double-remove. (this may get changed below.) */ - pend->conn->state = EXIT_CONN_STATE_RESOLVEFAILED; if(resolve->state == CACHE_STATE_FAILED) { pendconn = pend->conn; /* don't pass complex things to the connection_mark_for_close macro */ + /* prevent double-remove. */ + pend->conn->state = EXIT_CONN_STATE_RESOLVEFAILED; connection_mark_for_close(pendconn, END_STREAM_REASON_RESOLVEFAILED); } else { + /* prevent double-remove. */ + pend->conn->state = EXIT_CONN_STATE_CONNECTING; connection_exit_connect(pend->conn); } resolve->pending_connections = pend->next; |