diff --git a/include/proto/connection.h b/include/proto/connection.h index 001276de4..cd6e62d8d 100644 --- a/include/proto/connection.h +++ b/include/proto/connection.h @@ -178,7 +178,7 @@ static inline void conn_refresh_polling_flags(struct connection *conn) if (conn_ctrl_ready(conn) && !(conn->flags & CO_FL_WILL_UPDATE)) { unsigned int flags = conn->flags; - flags &= ~(CO_FL_CURR_RD_ENA | CO_FL_CURR_WR_ENA | CO_FL_WAIT_ROOM); + flags &= ~(CO_FL_CURR_RD_ENA | CO_FL_CURR_WR_ENA); if (fd_recv_active(conn->handle.fd)) flags |= CO_FL_CURR_RD_ENA; if (fd_send_active(conn->handle.fd)) diff --git a/src/raw_sock.c b/src/raw_sock.c index 197d27d14..63c8f6f48 100644 --- a/src/raw_sock.c +++ b/src/raw_sock.c @@ -72,6 +72,7 @@ int raw_sock_to_pipe(struct connection *conn, void *xprt_ctx, struct pipe *pipe, if (!fd_recv_ready(conn->handle.fd)) return 0; + conn->flags &= ~CO_FL_WAIT_ROOM; conn_refresh_polling_flags(conn); errno = 0; @@ -239,6 +240,7 @@ static size_t raw_sock_to_buf(struct connection *conn, void *xprt_ctx, struct bu if (!fd_recv_ready(conn->handle.fd)) return 0; + conn->flags &= ~CO_FL_WAIT_ROOM; conn_refresh_polling_flags(conn); errno = 0;