mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
BUG/MEDIUM: proxy: use thread-safe stream killing on hard-stop
When setting hard-stop-after, hard_stop() is called at the end to kill last pending streams. Unfortunately there's no locking there while walking over the streams list nor when shutting them down, so it's very likely that some old processes have been crashing or gone wild due to this. Let's use a thread_isolate() call for this as we don't have much other choice (and it happens once in the process' life, that's OK). This must be backported to 1.8.
This commit is contained in:
parent
61d095ed37
commit
92b887e20a
@ -1633,9 +1633,12 @@ struct task *hard_stop(struct task *t, void *context, unsigned short state)
|
||||
}
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
thread_isolate();
|
||||
list_for_each_entry(s, &streams, list) {
|
||||
stream_shutdown(s, SF_ERR_KILLED);
|
||||
}
|
||||
thread_release();
|
||||
|
||||
killed = 1;
|
||||
t->expire = tick_add(now_ms, MS_TO_TICKS(1000));
|
||||
|
Loading…
Reference in New Issue
Block a user