refactor logic to decide how much to package from inbuf

no actual changes in behavior
This commit is contained in:
Roger Dingledine 2018-07-18 21:00:27 -04:00 committed by Nick Mathewson
parent ebe39dcb92
commit e4d1187584

View File

@ -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;