mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
fix race condition that can cause crashes at client or exit relay
Avoid crashing if the client is trying to upload many bytes and the circuit gets torn down at the same time, or if the flip side happens on the exit relay. Bugfix on 0.2.0.1-alpha; fixes bug 1150.
This commit is contained in:
@@ -1097,6 +1097,7 @@ _circuit_mark_for_close(circuit_t *circ, int reason, int line,
|
||||
edge_connection_t *conn;
|
||||
for (conn=or_circ->n_streams; conn; conn=conn->next_stream)
|
||||
connection_edge_destroy(or_circ->p_circ_id, conn);
|
||||
or_circ->n_streams = NULL;
|
||||
|
||||
while (or_circ->resolving_streams) {
|
||||
conn = or_circ->resolving_streams;
|
||||
@@ -1120,6 +1121,7 @@ _circuit_mark_for_close(circuit_t *circ, int reason, int line,
|
||||
edge_connection_t *conn;
|
||||
for (conn=ocirc->p_streams; conn; conn=conn->next_stream)
|
||||
connection_edge_destroy(circ->n_circ_id, conn);
|
||||
ocirc->p_streams = NULL;
|
||||
}
|
||||
|
||||
circ->marked_for_close = line;
|
||||
|
||||
Reference in New Issue
Block a user