commit 217352c3624aa62384af57a2e7046e577671b915 Author: Andrea Shepard andrea@torproject.org Date: Wed Oct 10 00:19:57 2012 -0700
Make channel_flush_some_cells() compile cleanly on machines with ssize_t larger than int per sjumrdoch comment --- src/or/channel.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/src/or/channel.c b/src/or/channel.c index 880fa63..1ca5e1a 100644 --- a/src/or/channel.c +++ b/src/or/channel.c @@ -2018,7 +2018,7 @@ channel_flush_some_cells(channel_t *chan, ssize_t num_cells) { unsigned int unlimited = 0; ssize_t flushed = 0; - int num_cells_from_circs; + int num_cells_from_circs, clamped_num_cells;
tor_assert(chan);
@@ -2033,12 +2033,20 @@ channel_flush_some_cells(channel_t *chan, ssize_t num_cells) if (!unlimited && num_cells <= flushed) goto done;
if (circuitmux_num_cells(chan->cmux) > 0) { + /* Calculate number of cells, including clamp */ + if (unlimited) { + clamped_num_cells = MAX_CELLS_TO_GET_FROM_CIRCUITS_FOR_UNLIMITED; + } else { + if (num_cells - flushed > + MAX_CELLS_TO_GET_FROM_CIRCUITS_FOR_UNLIMITED) { + clamped_num_cells = MAX_CELLS_TO_GET_FROM_CIRCUITS_FOR_UNLIMITED; + } else { + clamped_num_cells = (int)(num_cells - flushed); + } + } /* Try to get more cells from any active circuits */ num_cells_from_circs = channel_flush_from_first_active_circuit( - chan, - (unlimited ? - MAX_CELLS_TO_GET_FROM_CIRCUITS_FOR_UNLIMITED : - (num_cells - flushed))); + chan, clamped_num_cells);
/* If it claims we got some, process the queue again */ if (num_cells_from_circs > 0) {
tor-commits@lists.torproject.org