Loading changes/bug14129 0 → 100644 +7 −0 Original line number Diff line number Diff line o Major bugfixes (exit node stability): - Fix an assertion failure that could occur under high DNS load. Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr"; diagnosed and fixed by "cypherpunks". src/or/dns.c +5 −1 Original line number Diff line number Diff line Loading @@ -558,6 +558,8 @@ purge_expired_resolves(time_t now) /* Connections should only be pending if they have no socket. */ tor_assert(!SOCKET_OK(pend->conn->base_.s)); pendconn = pend->conn; /* Prevent double-remove */ pendconn->base_.state = EXIT_CONN_STATE_RESOLVEFAILED; if (!pendconn->base_.marked_for_close) { connection_edge_end(pendconn, END_STREAM_REASON_TIMEOUT); circuit_detach_stream(circuit_get_by_edge_conn(pendconn), pendconn); Loading Loading @@ -1133,7 +1135,9 @@ connection_dns_remove(edge_connection_t *conn) return; /* more are pending */ } } tor_assert(0); /* not reachable unless onlyconn not in pending list */ log_warn(LD_BUG, "Connection (fd "TOR_SOCKET_T_FORMAT") was not waiting " "for a resolve of %s, but we tried to remove it.", conn->base_.s, escaped_safe_str(conn->base_.address)); } } Loading Loading
changes/bug14129 0 → 100644 +7 −0 Original line number Diff line number Diff line o Major bugfixes (exit node stability): - Fix an assertion failure that could occur under high DNS load. Fixes bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr"; diagnosed and fixed by "cypherpunks".
src/or/dns.c +5 −1 Original line number Diff line number Diff line Loading @@ -558,6 +558,8 @@ purge_expired_resolves(time_t now) /* Connections should only be pending if they have no socket. */ tor_assert(!SOCKET_OK(pend->conn->base_.s)); pendconn = pend->conn; /* Prevent double-remove */ pendconn->base_.state = EXIT_CONN_STATE_RESOLVEFAILED; if (!pendconn->base_.marked_for_close) { connection_edge_end(pendconn, END_STREAM_REASON_TIMEOUT); circuit_detach_stream(circuit_get_by_edge_conn(pendconn), pendconn); Loading Loading @@ -1133,7 +1135,9 @@ connection_dns_remove(edge_connection_t *conn) return; /* more are pending */ } } tor_assert(0); /* not reachable unless onlyconn not in pending list */ log_warn(LD_BUG, "Connection (fd "TOR_SOCKET_T_FORMAT") was not waiting " "for a resolve of %s, but we tried to remove it.", conn->base_.s, escaped_safe_str(conn->base_.address)); } } Loading