From 93ee227e180686ab582c0d8199fe07f20046e8d7 Mon Sep 17 00:00:00 2001 From: Mike Perry Date: Fri, 1 Jun 2018 00:23:08 +0000 Subject: [PATCH 1/2] Bug 26259: Don't count 0-length RELAY_COMMAND_DATA in CIRC_BW OVERHEAD This cell should be treated as invalid for purposes of CIRC_BW. --- src/or/relay.c | 2 +- src/test/test_relaycell.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/or/relay.c b/src/or/relay.c index 0aa15203f3..50f59d6b99 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -1556,7 +1556,7 @@ connection_edge_process_relay_cell(cell_t *cell, circuit_t *circ, return -END_CIRC_REASON_TORPROTOCOL; } /* Total all valid application bytes delivered */ - if (CIRCUIT_IS_ORIGIN(circ)) { + if (CIRCUIT_IS_ORIGIN(circ) && rh.length > 0) { circuit_read_valid_data(TO_ORIGIN_CIRCUIT(circ), rh.length); } diff --git a/src/test/test_relaycell.c b/src/test/test_relaycell.c index 1db5202739..52f4d6113e 100644 --- a/src/test/test_relaycell.c +++ b/src/test/test_relaycell.c @@ -233,6 +233,13 @@ test_circbw_relay(void *arg) circ->cpath); ASSERT_COUNTED_BW(); + /* Empty Data cell on open connection: not counted */ + ENTRY_TO_CONN(entryconn)->marked_for_close = 0; + PACK_CELL(1, RELAY_COMMAND_DATA, ""); + connection_edge_process_relay_cell(&cell, TO_CIRCUIT(circ), edgeconn, + circ->cpath); + ASSERT_UNCOUNTED_BW(); + /* Sendme on stream: not counted */ ENTRY_TO_CONN(entryconn)->outbuf_flushlen = 0; PACK_CELL(1, RELAY_COMMAND_SENDME, "Data1234"); From 2b734944af88f17dfe6ce9bf7402d6aa1211d710 Mon Sep 17 00:00:00 2001 From: Mike Perry Date: Fri, 1 Jun 2018 00:24:00 +0000 Subject: [PATCH 2/2] Bug 26259: Changes file. --- changes/bug26259 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 changes/bug26259 diff --git a/changes/bug26259 b/changes/bug26259 new file mode 100644 index 0000000000..f5383dab32 --- /dev/null +++ b/changes/bug26259 @@ -0,0 +1,4 @@ + o Minor bugfixes (control port): + - Do not count 0-length RELAY_COMMAND_DATA cells as valid data in CIRC_BW + events. Previously, such cells were counted entirely in the OVERHEAD + field. Now they are not. Fixes bug 26259; bugfix on 0.3.4.1-alpha.