mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
BUG/MEDIUM: h2: Remove the tasklet from the task list if unsubscribing.
In h2_unsubscribe(), if we unsubscribe on SUB_CALL_UNSUBSCRIBE, then remove ourself from the sending_list, and remove the tasklet from the task list. We're probably about to destroy the stream anyway, so we don't want the tasklet to run, or to stay in the sending_list, or it could lead to a crash. This should be backpored to 1.9.
This commit is contained in:
parent
afc7cb85c4
commit
3ea3513689
@ -5182,9 +5182,11 @@ static int h2_unsubscribe(struct conn_stream *cs, int event_type, void *param)
|
|||||||
sw = param;
|
sw = param;
|
||||||
if (h2s->send_wait == sw) {
|
if (h2s->send_wait == sw) {
|
||||||
sw->events &= ~SUB_CALL_UNSUBSCRIBE;
|
sw->events &= ~SUB_CALL_UNSUBSCRIBE;
|
||||||
|
task_remove_from_task_list((struct task *)h2s->send_wait->task);
|
||||||
h2s->send_wait = NULL;
|
h2s->send_wait = NULL;
|
||||||
LIST_DEL(&h2s->list);
|
LIST_DEL(&h2s->list);
|
||||||
LIST_INIT(&h2s->list);
|
LIST_INIT(&h2s->list);
|
||||||
|
LIST_DEL_INIT(&h2s->sending_list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user