mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 14:43:46 +01:00
Fix bug on dns_found_answer from mark_to_close stuff.
svn:r1165
This commit is contained in:
parent
fadfd26188
commit
55174d1cb0
11
src/or/dns.c
11
src/or/dns.c
@ -297,16 +297,19 @@ static void dns_found_answer(char *address, uint32_t addr) {
|
|||||||
|
|
||||||
while(resolve->pending_connections) {
|
while(resolve->pending_connections) {
|
||||||
pend = resolve->pending_connections;
|
pend = resolve->pending_connections;
|
||||||
assert_connection_ok(pend->conn,0);
|
assert_connection_ok(pend->conn,time(NULL));
|
||||||
pend->conn->addr = resolve->addr;
|
pend->conn->addr = resolve->addr;
|
||||||
if(resolve->state == CACHE_STATE_FAILED) {
|
if(resolve->state == CACHE_STATE_FAILED) {
|
||||||
|
/* This calls dns_cancel_pending_resolve, which removes pend
|
||||||
|
* from the list, so we don't have to do it. Beware of
|
||||||
|
* modify-while-iterating bugs hereabouts! */
|
||||||
connection_mark_for_close(pend->conn, END_STREAM_REASON_RESOLVEFAILED);
|
connection_mark_for_close(pend->conn, END_STREAM_REASON_RESOLVEFAILED);
|
||||||
|
assert(resolve->pending_connections != pend);
|
||||||
} else {
|
} else {
|
||||||
assert_connection_ok(pend->conn, time(NULL));
|
|
||||||
connection_exit_connect(pend->conn);
|
connection_exit_connect(pend->conn);
|
||||||
|
resolve->pending_connections = pend->next;
|
||||||
|
free(pend);
|
||||||
}
|
}
|
||||||
resolve->pending_connections = pend->next;
|
|
||||||
free(pend);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user