[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] r17626: {tor} minimal (i think) backport of r17625 (in tor/branches/tor-0_2_0-patches: . src/or)
Author: arma
Date: 2008-12-14 15:02:00 -0500 (Sun, 14 Dec 2008)
New Revision: 17626
Modified:
tor/branches/tor-0_2_0-patches/ChangeLog
tor/branches/tor-0_2_0-patches/src/or/relay.c
Log:
minimal (i think) backport of r17625
Modified: tor/branches/tor-0_2_0-patches/ChangeLog
===================================================================
--- tor/branches/tor-0_2_0-patches/ChangeLog 2008-12-14 19:40:56 UTC (rev 17625)
+++ tor/branches/tor-0_2_0-patches/ChangeLog 2008-12-14 20:02:00 UTC (rev 17626)
@@ -1,4 +1,12 @@
Changes in version 0.2.0.33 - 200?-??-??
+ o Major bugfixes:
+ - When a stream at an exit relay is in state "resolving" or
+ "connecting" and it receives an "end" relay cell, the exit relay
+ would silently ignore the end cell and not close the stream. If
+ the client never closes the circuit, then the exit relay never
+ closes the TCP connection. Bug introduced in Tor 0.1.2.1-alpha;
+ reported by "wood".
+
o Minor bugfixes:
- Do not mark smartlist_bsearch_idx() function as ATTR_PURE. This bug
could make gcc generate non-functional binary search code. Bugfix
Modified: tor/branches/tor-0_2_0-patches/src/or/relay.c
===================================================================
--- tor/branches/tor-0_2_0-patches/src/or/relay.c 2008-12-14 19:40:56 UTC (rev 17625)
+++ tor/branches/tor-0_2_0-patches/src/or/relay.c 2008-12-14 20:02:00 UTC (rev 17626)
@@ -890,8 +890,14 @@
return connection_edge_process_end_not_open(rh, cell,
TO_ORIGIN_CIRCUIT(circ), conn,
layer_hint);
- else
+ else {
+ /* we just got an 'end', don't need to send one */
+ conn->_base.edge_has_sent_end = 1;
+ conn->end_reason = *(cell->payload+RELAY_HEADER_SIZE) |
+ END_STREAM_REASON_FLAG_REMOTE;
+ connection_mark_for_close(TO_CONN(conn));
return 0;
+ }
}
if (conn->_base.type == CONN_TYPE_AP &&