diff --git a/changes/not_bug_8093 b/changes/not_bug_8093 new file mode 100644 index 0000000000..1f72363470 --- /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 a17c333310..f565f9274a 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;