diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-07-23 14:07:26 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-07-23 14:07:26 +0000 |
commit | cc46b232485b192d988bc6ef9ffbfcb88e630491 (patch) | |
tree | d1f5875f1f48a3d72bbc58cacb903998d3460d4e | |
parent | 087094961b0ba75435fe5bdfab0788b0e3b5293c (diff) | |
download | tor-cc46b232485b192d988bc6ef9ffbfcb88e630491.tar tor-cc46b232485b192d988bc6ef9ffbfcb88e630491.tar.gz |
r17308@aud-055: nickm | 2008-07-23 15:57:41 +0200
In connection_edge_destroy, send a stream status control event when we have an AP connection. Previously, we would send an event when the connection was AP and non-AP at the same time. This didn't work so well. Patch from Anonymous Remailer (Austria). Backport candidate.
svn:r16143
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/or/connection_edge.c | 6 |
2 files changed, 8 insertions, 3 deletions
@@ -39,6 +39,11 @@ Changes in version 0.2.1.3-alpha - 2008-07-xx don't reschedule publication of the next descriptor. Fixes bug 763. Bugfix on 0.0.9.3. + o Minor bugfixes (controller): + - When closing an application-side connection because its circuit + is getting torn down, generate the stream event correctly. + Bugfix on 0.1.2.x. Anonymous patch. + o Removed features - Remove all backward-compatibility code to support servers running versions of Tor so old as to no longer work at all on the Tor network. diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 96a9bb6c8..aee22eb0c 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -160,14 +160,14 @@ connection_edge_destroy(uint16_t circ_id, edge_connection_t *conn) "CircID %d: At an edge. Marking connection for close.", circ_id); if (conn->_base.type == CONN_TYPE_AP) { connection_mark_unattached_ap(conn, END_STREAM_REASON_DESTROY); + control_event_stream_status(conn, STREAM_EVENT_CLOSED, + END_STREAM_REASON_DESTROY); + conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED; } else { /* closing the circuit, nothing to send an END to */ conn->_base.edge_has_sent_end = 1; conn->end_reason = END_STREAM_REASON_DESTROY; conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED; - 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; } |