diff --git a/src/mux_h1.c b/src/mux_h1.c index f6254338f..89bcc3c81 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -4819,6 +4819,10 @@ static size_t h1_done_ff(struct stconn *sc) h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); } se_fl_set_error(h1s->sd); + if (sd->iobuf.pipe) { + put_pipe(sd->iobuf.pipe); + sd->iobuf.pipe = NULL; + } TRACE_DEVEL("connection error", H1_EV_STRM_ERR|H1_EV_H1C_ERR|H1_EV_H1S_ERR, h1c->conn, h1s); } @@ -5074,6 +5078,10 @@ static int h1_resume_fastfwd(struct stconn *sc, unsigned int flags) h1c->conn->xprt->subscribe(h1c->conn, h1c->conn->xprt_ctx, SUB_RETRY_RECV, &h1c->wait_event); } se_fl_set_error(h1s->sd); + if (h1s->sd->iobuf.pipe) { + put_pipe(h1s->sd->iobuf.pipe); + h1s->sd->iobuf.pipe = NULL; + } TRACE_DEVEL("connection error", H1_EV_STRM_ERR|H1_EV_H1C_ERR|H1_EV_H1S_ERR, h1c->conn, h1s); } diff --git a/src/mux_pt.c b/src/mux_pt.c index 46e1d2e94..e0d31bb7b 100644 --- a/src/mux_pt.c +++ b/src/mux_pt.c @@ -621,6 +621,10 @@ static size_t mux_pt_done_ff(struct stconn *sc) if (conn_xprt_read0_pending(conn)) se_fl_set(ctx->sd, SE_FL_EOS); se_fl_set_error(ctx->sd); + if (se->iobuf.pipe) { + put_pipe(se->iobuf.pipe); + se->iobuf.pipe = NULL; + } TRACE_DEVEL("error on connection", PT_EV_TX_DATA|PT_EV_CONN_ERR, conn, sc); } @@ -736,6 +740,10 @@ static int mux_pt_resume_fastfwd(struct stconn *sc, unsigned int flags) if (conn_xprt_read0_pending(conn)) se_fl_set(ctx->sd, SE_FL_EOS); se_fl_set_error(ctx->sd); + if (se->iobuf.pipe) { + put_pipe(se->iobuf.pipe); + se->iobuf.pipe = NULL; + } TRACE_DEVEL("error on connection", PT_EV_TX_DATA|PT_EV_CONN_ERR, conn, sc); }