From ea90063cbcc03506510522809d564112aa1a9ce9 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 17 Dec 2013 14:21:48 +0100 Subject: [PATCH] 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. --- src/stream_interface.c | 2 ++ 1 file changed, 2 insertions(+) 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 -- 2.39.5