mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
BUG/MEDIUM: h2: Don't forget to destroy the h2s after deferred shut.
If we had to defer shutr/shutw, and we're now done, destroy the h2s, or nobody will do so.
This commit is contained in:
parent
27d93c3f94
commit
2c68a462e1
13
src/mux_h2.c
13
src/mux_h2.c
@ -2997,11 +2997,20 @@ static struct task *h2_deferred_shut(struct task *t, void *ctx, unsigned short s
|
|||||||
struct h2s *h2s = ctx;
|
struct h2s *h2s = ctx;
|
||||||
long reason = (long)h2s->wait_event.handle;
|
long reason = (long)h2s->wait_event.handle;
|
||||||
|
|
||||||
if (reason & 1)
|
if (h2s->send_wait) {
|
||||||
h2_do_shutr(h2s);
|
h2s->send_wait->wait_reason &= ~SUB_CALL_UNSUBSCRIBE;
|
||||||
|
h2s->send_wait = NULL;
|
||||||
|
LIST_DEL(&h2s->list);
|
||||||
|
LIST_INIT(&h2s->list);
|
||||||
|
}
|
||||||
if (reason & 2)
|
if (reason & 2)
|
||||||
h2_do_shutw(h2s);
|
h2_do_shutw(h2s);
|
||||||
|
if (reason & 1)
|
||||||
|
h2_do_shutr(h2s);
|
||||||
|
|
||||||
|
if (h2s->st == H2_SS_CLOSED &&
|
||||||
|
!((h2s->flags & (H2_SF_BLK_MBUSY | H2_SF_BLK_MROOM | H2_SF_BLK_MFCTL))))
|
||||||
|
h2s_destroy(h2s);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user