From 145aa4772cd28e11381209bd66104175c8a30a4d Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 6 Dec 2018 10:56:20 +0100 Subject: [PATCH] MINOR: mux-h1: Drain obuf if the output is closed after sending data It avoids to subscribe to send events because some may remain in the output buffer. If the output is closed or if an error occurred, there is no way to send these data anyway, so it is safe to drain them. --- src/mux_h1.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/mux_h1.c b/src/mux_h1.c index c55fb7cd1..3b845a6ec 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -1627,6 +1627,11 @@ static int h1_send(struct h1c *h1c) sent = 1; } + if (conn->flags & (CO_FL_ERROR|CO_FL_SOCK_WR_SH)) { + /* error or output closed, nothing to send, clear the buffer to release it */ + b_reset(&h1c->obuf); + } + end: if (!(h1c->flags & H1C_F_OUT_FULL) && h1c->h1s && h1c->h1s->send_wait) { struct h1s *h1s = h1c->h1s;