From: Willy Tarreau Date: Tue, 17 Dec 2013 13:21:48 +0000 (+0100) Subject: BUG/MEDIUM: stream-int: fix the keep-alive idle connection handler X-Git-Tag: v1.5-dev22~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ea90063;p=thirdparty%2Fhaproxy.git 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 5c4633b812..bf0a40032f 100644 --- a/src/stream_interface.c +++ b/src/stream_interface.c @@ -508,6 +508,8 @@ static void si_idle_conn_null_cb(struct connection *conn) /* 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