mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
properly delete current channel in channel_free_list
channel_unregister() removes channels from the current smartlist while we're in a SMORTLIST_FOREACH loop. This only works by accident.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
o Minor bugfixes:
|
||||
- When calling channel_free_list(), avoid calling smartlist_remove()
|
||||
while inside a FOREACH loop. This partially reverts commit
|
||||
17356fe7fd96af where the correct SMARTLIST_DEL_CURRENT was
|
||||
removed. Fixes bug 16929; bugfix on 0.2.4.4-alpha.
|
||||
|
||||
@@ -3069,6 +3069,7 @@ channel_free_list(smartlist_t *channels, int mark_for_close)
|
||||
if (curr->cmux) {
|
||||
circuitmux_detach_all_circuits(curr->cmux, NULL);
|
||||
}
|
||||
SMARTLIST_DEL_CURRENT(channels, curr);
|
||||
channel_unregister(curr);
|
||||
if (mark_for_close) {
|
||||
if (!CHANNEL_CONDEMNED(curr)) {
|
||||
|
||||
Reference in New Issue
Block a user