746dd9c
diff -up cups-2.0.2/scheduler/client.c.busy-loop cups-2.0.2/scheduler/client.c
746dd9c
--- cups-2.0.2/scheduler/client.c.busy-loop	2014-08-28 16:37:22.000000000 +0100
746dd9c
+++ cups-2.0.2/scheduler/client.c	2015-03-16 17:24:32.506232983 +0000
746dd9c
@@ -585,6 +585,17 @@ cupsdReadClient(cupsd_client_t *con)	/*
746dd9c
     * connection and we need to shut it down...
746dd9c
     */
746dd9c
 
746dd9c
+    if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
746dd9c
+    {
746dd9c
+     /*
746dd9c
+      * Connection closed...
746dd9c
+      */
746dd9c
+
746dd9c
+      cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
746dd9c
+      cupsdCloseClient(con);
746dd9c
+      return;
746dd9c
+    }
746dd9c
+
746dd9c
     cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.",
746dd9c
 		   httpStateString(httpGetState(con->http)));
746dd9c
     cupsdCloseClient(con);
746dd9c
@@ -1979,12 +1990,6 @@ cupsdReadClient(cupsd_client_t *con)	/*
746dd9c
 
746dd9c
 	if (httpGetState(con->http) == HTTP_STATE_POST_SEND)
746dd9c
 	{
746dd9c
-	 /*
746dd9c
-	  * Don't listen for activity until we decide to do something with this...
746dd9c
-	  */
746dd9c
-
746dd9c
-          cupsdAddSelect(httpGetFd(con->http), NULL, NULL, con);
746dd9c
-
746dd9c
 	  if (con->file >= 0)
746dd9c
 	  {
746dd9c
 	    fstat(con->file, &filestats);