[tor-commits] [tor/master] count DATA cells with stream ID 0 as delivered for SENDME purposes

nickm at torproject.org nickm at torproject.org
Wed Jun 11 13:24:43 UTC 2014


commit 2e1f23151c5154b63ad1a533a2d51a1b8ecbd6ad
Author: Nick Mathewson <nickm at torproject.org>
Date:   Fri Mar 22 14:57:58 2013 -0400

    count DATA cells with stream ID 0 as delivered for SENDME purposes
    
    Found while investigating 8093, but probably not the cause of it,
    since this bug would result in us sending too few SENDMEs, not in us
    receiving SENDMEs unexpectedly.
    
    Bugfix on the fix for 7889, which has appeared in 0.2.4.10-alpha, but
    not yet in any released 0.2.3.x version.
---
 changes/not_bug_8093 |    5 +++++
 src/or/relay.c       |    7 +++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/changes/not_bug_8093 b/changes/not_bug_8093
new file mode 100644
index 0000000..1f72363
--- /dev/null
+++ b/changes/not_bug_8093
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - When rejecting DATA cells for stream_id zero, still count them against
+      the circuit's deliver window so that we don't get fail to send a
+      SENDME.  Fix related to but probably not the cause of bug 8093; bugfix
+      on 0.2.4.10-alpha.
diff --git a/src/or/relay.c b/src/or/relay.c
index a17c333..f565f92 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1050,7 +1050,6 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
     switch (rh.command) {
       case RELAY_COMMAND_BEGIN:
       case RELAY_COMMAND_CONNECTED:
-      case RELAY_COMMAND_DATA:
       case RELAY_COMMAND_END:
       case RELAY_COMMAND_RESOLVE:
       case RELAY_COMMAND_RESOLVED:
@@ -1135,7 +1134,11 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ,
 
       circuit_consider_sending_sendme(circ, layer_hint);
 
-      if (!conn) {
+      if (rh.stream_id == 0) {
+        log_fn(LOG_PROTOCOL_WARN, LD_PROTOCOL, "Relay data cell with zero "
+               "stream_id. Dropping.");
+        return 0;
+      } else if (!conn) {
         log_info(domain,"data cell dropped, unknown stream (streamid %d).",
                  rh.stream_id);
         return 0;





More information about the tor-commits mailing list