diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-09-11 14:32:39 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-09-11 14:32:39 -0400 |
commit | 2d0a6d76916d61e6264d8537e0d99daeae9829ba (patch) | |
tree | 8f01503c3851a405f199391b50abbc29f7a18a74 /src/core/or/channelpadding.c | |
parent | 7852499812a4bbe707ff0da065a853de69be2c4d (diff) | |
parent | 578aaa7f122df32cdf4ffe713bc8aa179433fb0b (diff) | |
download | tor-2d0a6d76916d61e6264d8537e0d99daeae9829ba.tar.gz tor-2d0a6d76916d61e6264d8537e0d99daeae9829ba.zip |
Merge remote-tracking branch 'mikeperry/bug25505'
Diffstat (limited to 'src/core/or/channelpadding.c')
-rw-r--r-- | src/core/or/channelpadding.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/core/or/channelpadding.c b/src/core/or/channelpadding.c index 1a8f8209d0..0a7e93d391 100644 --- a/src/core/or/channelpadding.c +++ b/src/core/or/channelpadding.c @@ -376,7 +376,8 @@ channelpadding_send_padding_cell_for_callback(channel_t *chan) chan->pending_padding_callback = 0; if (monotime_coarse_is_zero(&chan->next_padding_time) || - chan->has_queued_writes(chan)) { + chan->has_queued_writes(chan) || + (chan->cmux && circuitmux_num_cells(chan->cmux))) { /* We must have been active before the timer fired */ monotime_coarse_zero(&chan->next_padding_time); return; @@ -743,7 +744,11 @@ channelpadding_decide_to_pad_channel(channel_t *chan) return CHANNELPADDING_WONTPAD; } - if (!chan->has_queued_writes(chan)) { + /* There should always be a cmux on the circuit. After that, + * only schedule padding if there are no queued writes and no + * queued cells in circuitmux queues. */ + if (chan->cmux && !chan->has_queued_writes(chan) && + !circuitmux_num_cells(chan->cmux)) { int is_client_channel = 0; if (CHANNEL_IS_CLIENT(chan, options)) { |