diff --git a/src/stream_interface.c b/src/stream_interface.c index 90e4044fb..905612cef 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -807,6 +807,14 @@ static void stream_int_chk_snd_conn(struct stream_interface *si) !(si->flags & SI_FL_WAIT_DATA)) /* not waiting for data */ return; + if (si->conn->flags & (CO_FL_DATA_WR_ENA|CO_FL_CURR_WR_ENA)) { + /* already subscribed to write notifications, will be called + * anyway, so let's avoid calling it especially if the reader + * is not ready. + */ + return; + } + if (!(si->conn->flags & (CO_FL_HANDSHAKE|CO_FL_WAIT_L4_CONN|CO_FL_WAIT_L6_CONN))) { /* Before calling the data-level operations, we have to prepare * the polling flags to ensure we properly detect changes.