mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
r11694@catbus: nickm | 2007-02-07 13:25:01 -0500
Fix patch for 9510: never call control_event_stream_status on an exit connection. Should fix assert() noticed by xiando. svn:r9514
This commit is contained in:
@@ -948,14 +948,12 @@ _circuit_mark_for_close(circuit_t *circ, int reason, int line,
|
||||
conn = or_circ->resolving_streams;
|
||||
or_circ->resolving_streams = conn->next_stream;
|
||||
if (!conn->_base.marked_for_close) {
|
||||
/* The other side will see a DESTROY, and infer that the connections
|
||||
/* The client will see a DESTROY, and infer that the connections
|
||||
* are closing because the circuit is getting torn down. No need
|
||||
* to send an end cell. */
|
||||
conn->_base.edge_has_sent_end = 1;
|
||||
conn->end_reason = END_STREAM_REASON_DESTROY;
|
||||
conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED;
|
||||
control_event_stream_status(conn, STREAM_EVENT_CLOSED,
|
||||
END_STREAM_REASON_DESTROY);
|
||||
connection_mark_for_close(TO_CONN(conn));
|
||||
}
|
||||
conn->on_circuit = NULL;
|
||||
|
||||
@@ -159,8 +159,9 @@ connection_edge_destroy(uint16_t circ_id, edge_connection_t *conn)
|
||||
conn->_base.edge_has_sent_end = 1;
|
||||
conn->end_reason = END_STREAM_REASON_DESTROY;
|
||||
conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED;
|
||||
control_event_stream_status(conn, STREAM_EVENT_CLOSED,
|
||||
END_STREAM_REASON_DESTROY);
|
||||
if (conn->_base.type == CONN_TYPE_AP)
|
||||
control_event_stream_status(conn, STREAM_EVENT_CLOSED,
|
||||
END_STREAM_REASON_DESTROY);
|
||||
connection_mark_for_close(TO_CONN(conn));
|
||||
conn->_base.hold_open_until_flushed = 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user