This cell should be treated as invalid for purposes of CIRC_BW.
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);
}
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");