mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 20:33:31 +01:00
3ef7e6f187
When a channel is scheduled and flush cells returns 0 that is no cells to flush, we flag it back in waiting for cells so it doesn't get stuck in a possible infinite loop. It has been observed on moria1 where a closed channel end up in the scheduler where the flush process returned 0 cells but it was ultimately kept in the scheduling loop forever. We suspect that this is due to a more deeper problem in tor where the channel_more_to_flush() is actually looking at the wrong queue and was returning 1 for an empty channel thus putting the channel in the "Case 4" of the scheduler which is to go back in pending state thus re-considered at the next iteration. This is a fix that allows the KIST scheduler to recover properly from a not entirelly diagnosed problem in tor. Fixes #23676 Signed-off-by: David Goulet <dgoulet@torproject.org>
7 lines
395 B
Plaintext
7 lines
395 B
Plaintext
o Major bugfixes (scheduler):
|
|
If a channel is put into the scheduler's pending list, then it starts
|
|
closing, and then if the scheduler runs before it finishes closing, the
|
|
scheduler will get stuck trying to flush its cells while the lower layers
|
|
refuse to cooperate. Fix that race condition by given the scheduler an
|
|
escape method. Fixes bug 23676; bugfix on 0.3.2.1-alpha
|