Commit a24b9e6a authored by Nick Mathewson's avatar Nick Mathewson 🎨
Browse files

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
parent ae443380
......@@ -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;
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment