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.
This commit is contained in:
Willy Tarreau 2013-12-17 14:21:48 +01:00
parent 783e1cf322
commit ea90063cbc

View File

@ -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