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:
parent
b531fc7d9a
commit
bbb73eaf31
|
@ -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)) {
|
||||
|
|
Loading…
Reference in New Issue