diff --git a/src/mux_h1.c b/src/mux_h1.c index 3d2bd8b87..e497e6f68 100644 --- a/src/mux_h1.c +++ b/src/mux_h1.c @@ -2192,9 +2192,9 @@ static void h1_detach(struct conn_stream *cs) } } - /* We don't want to close right now unless the connection is in error */ - if ((h1c->flags & (H1C_F_CS_ERROR|H1C_F_CS_SHUTDOWN|H1C_F_UPG_H2C)) || - (h1c->conn->flags & CO_FL_ERROR) || !h1c->conn->owner) + /* We don't want to close right now unless the connection is in error or shut down for writes */ + if ((h1c->flags & (H1C_F_CS_ERROR|H1C_F_CS_SHUTW_NOW|H1C_F_CS_SHUTDOWN|H1C_F_UPG_H2C)) || + (h1c->conn->flags & (CO_FL_ERROR|CO_FL_SOCK_WR_SH)) || !h1c->conn->owner) h1_release(h1c); else { tasklet_wakeup(h1c->wait_event.tasklet);