From: Roger Dingledine Date: Thu, 19 Jul 2018 01:00:27 +0000 (-0400) Subject: refactor logic to decide how much to package from inbuf X-Git-Tag: tor-0.4.1.2-alpha~31^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e4d1187584038593a75140d9a8e47024c9eba04c;p=thirdparty%2Ftor.git refactor logic to decide how much to package from inbuf no actual changes in behavior --- diff --git a/src/core/or/relay.c b/src/core/or/relay.c index 5197ee6138..05fee57a1a 100644 --- a/src/core/or/relay.c +++ b/src/core/or/relay.c @@ -2102,14 +2102,15 @@ connection_edge_package_raw_inbuf(edge_connection_t *conn, int package_partial, if (!bytes_to_process) return 0; - if (!package_partial && bytes_to_process < RELAY_PAYLOAD_SIZE) - return 0; + length = RELAY_PAYLOAD_SIZE; - if (bytes_to_process > RELAY_PAYLOAD_SIZE) { - length = RELAY_PAYLOAD_SIZE; - } else { - length = bytes_to_process; + if (bytes_to_process < length) { /* not a full payload available */ + if (package_partial) + length = bytes_to_process; /* just take whatever's available now */ + else + return 0; /* nothing to do until we have a full payload */ } + stats_n_data_bytes_packaged += length; stats_n_data_cells_packaged += 1;