The fix in http://www.cups.org/str.php?L4187 is not complete. It misses
the case where the server terminates the connection. recv() then does
not return with an error but returns 0 (EOF). The last case is missed.

Here is a modified patch (to apply instead that one of L4187) which
solves the issue:

--- ../request.c.orig   2013-04-22 13:48:31.409721696 +0200
+++ cups/request.c      2013-04-22 13:47:15.261963227 +0200
@@ -1004,6 +1004,26 @@
       httpClose(cg->http);
       cg->http = NULL;
     }
+    else
+    {
+     /*
+      * Same server, see if the connection is still established...
+      */
+
+      char ch;                         /* Connection check byte */
+      int n;
+
+      if ( (n = recv(cg->http->fd, &ch, 1, MSG_PEEK | MSG_DONTWAIT) == 0) ||
+                 ( n < 0 && errno != EWOULDBLOCK ) )
+      {
+       /*
+        * Nope, close the connection...
+        */
+
+       httpClose(cg->http);
+       cg->http = NULL;
+      }
+    }
   }
 
  /*

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1020048

Title:
  after certain time printing to cups stops working

To manage notifications about this bug go to:
https://bugs.launchpad.net/df-libreoffice/+bug/1020048/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to