diff -up hplip-3.9.8/prnt/hpijs/services.cpp.hpcups-sigpipe hplip-3.9.8/prnt/hpijs/services.cpp --- hplip-3.9.8/prnt/hpijs/services.cpp.hpcups-sigpipe 2009-08-04 22:35:41.000000000 +0100 +++ hplip-3.9.8/prnt/hpijs/services.cpp 2009-10-29 11:56:23.015022337 +0000 @@ -29,6 +29,7 @@ POSSIBILITY OF SUCH DAMAGE. \*****************************************************************************/ +#include #include #include #include @@ -382,8 +383,16 @@ DRIVER_ERROR UXServices::ToDevice(const if (write(OutputPath, pBuffer, *Count) != (ssize_t)*Count) { static int cnt=0; - if (cnt++ < 5) + if (cnt < 5) + { + cnt++; BUG("unable to write to output, fd=%d, count=%d: %m\n", OutputPath, *Count); + } + + if (errno == EPIPE) + /* The backend has exited. There's no recovering from that. */ + exit (1); + return IO_ERROR; }