BUG/MEDIUM: stream-int: fix the keep-alive idle connection handler
Commit 2737562 (MEDIUM: stream-int: implement a very simplistic idle
connection manager) implemented an idle connection handler. In the
case where all data is drained from the server, it fails to disable
polling, resulting in a busy spinning loop.
Thanks to Sander Klein and Guillaume Castagnino for reporting this bug.
No backport is needed.
diff --git a/src/stream_interface.c b/src/stream_interface.c
index 5c4633b..bf0a400 100644
--- a/src/stream_interface.c
+++ b/src/stream_interface.c
@@ -508,6 +508,8 @@
/* disable draining if we were called and have no drain function */
if (!conn->ctrl->drain)
__conn_data_stop_recv(conn);
+ else if (!(conn->flags & CO_FL_SOCK_RD_SH))
+ __conn_data_poll_recv(conn);
}
/* Callback to be used by connection I/O handlers when some activity is detected