| http://cups.org/str.php?L4605+P-1+S-2+C0+I0+E0+Q100%25 |
| https://bugs.gentoo.org/show_bug.cgi?id=549732 |
| |
| commit bb00c43fccb5aa2dec8e03bd9783e1ee267266a7 |
| Author: msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be> |
| Date: Wed May 6 18:01:04 2015 +0000 |
| |
| The scheduler could get caught in a busy loop (STR #4605) |
| |
| |
| |
| git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12613 a1ca3aef-8c08-0410-bb20-df032aa958be |
| |
| diff --git a/scheduler/client.c b/scheduler/client.c |
| index c5a9960..50464a5 100644 |
| --- a/scheduler/client.c |
| +++ b/scheduler/client.c |
| @@ -585,6 +585,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ |
| * connection and we need to shut it down... |
| */ |
| |
| + if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1) |
| + { |
| + /* |
| + * Connection closed... |
| + */ |
| + |
| + cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF."); |
| + cupsdCloseClient(con); |
| + return; |
| + } |
| + |
| cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.", |
| httpStateString(httpGetState(con->http))); |
| cupsdCloseClient(con); |
| @@ -1979,12 +1990,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ |
| |
| if (httpGetState(con->http) == HTTP_STATE_POST_SEND) |
| { |
| - /* |
| - * Don't listen for activity until we decide to do something with this... |
| - */ |
| - |
| - cupsdAddSelect(httpGetFd(con->http), NULL, NULL, con); |
| - |
| if (con->file >= 0) |
| { |
| fstat(con->file, &filestats); |