[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#848934: cups-daemon: ErrorPolicy ignored if ipp:// printer rebooted mid-job



Package: cups-daemon
Version: 2.2.1-2
Severity: minor

To reproduce:
1. Obtain an IPP network printer with a static IP address.
2. Define a cups queue for said printer using the ipp: backend
3. Set an ErrorPolicy that's not "stop-printer" (e.g. abort-job).
4. Start a large print job on this printer, i.e. a job that needs at
   least 10 seconds to send over the network.
5. While the job is being transmitted over the network, crash the
   printer (e.g. yank the power cord).
6. Immediately restart the printer.
7. Wait for the job to fail.

Expected behavior:  cups handles the job failure according to the
specified ErrorPolicy.

Actual behavior: cups stops the printer, blocking subsequent jobs.
system-config-printer alerts me of the job failure but doesn't inform
me that the printer's been stopped.  "Nothing prints" until I do `sudo
cupsenable queue_name`.

This appears to be independent of printer make/model.  I've reproduced
this with an HP LaserJet 4250dtn and a Brother DCP-8155DN.

I think problem is that the ipp backend exits with CUPS_BACKEND_STOP if
the TCP connection gets terminated with a RST packet.  When I crash
the printer, the ipp backend starts sending TCP retransmissions, and
when the printer reboots, it responds to next retransmission with a RST
(much as I would expect from freshly-rebooted embedded TCP/IP stack).

Perhaps the backend should return CUPS_BACKEND_FAILED instead?

I should add that I've also seen a printer power-cycle itself
mid-transfer during a print job that it apparently couldn't handle.
(That's was how I discovered this bug, actually.)  Even in that case,
though, I'd prefer to use the abort-job error policy.

-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.6.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages cups-daemon depends on:
ii  adduser              3.115
ii  bc                   1.06.95-9+b2
ii  dpkg                 1.18.15
ii  init-system-helpers  1.46
ii  libavahi-client3     0.6.32-1
ii  libavahi-common3     0.6.32-1
ii  libc6                2.24-8
ii  libcups2             2.2.1-2
ii  libcupsmime1         2.2.1-2
ii  libdbus-1-3          1.10.14-1
ii  libgssapi-krb5-2     1.15~beta1-1
ii  libpam0g             1.1.8-3.3
ii  libpaper1            1.1.24+nmu5
ii  libsystemd0          232-7
ii  lsb-base             9.20161125
ii  procps               2:3.3.11-3
ii  ssl-cert             1.0.38

Versions of packages cups-daemon recommends:
ii  avahi-daemon  0.6.32-1
ii  colord        1.3.3-2
ii  cups-browsed  1.11.6-1+b1

Versions of packages cups-daemon suggests:
ii  cups                                       2.2.1-2
ii  cups-bsd                                   2.2.1-2
ii  cups-client                                2.2.1-2
ii  cups-common                                2.2.1-2
ii  cups-filters [foomatic-filters]            1.11.6-1+b1
pn  cups-pdf                                   <none>
ii  cups-ppdc                                  2.2.1-2
ii  cups-server-common                         2.2.1-2
ii  foomatic-db-compressed-ppds [foomatic-db]  20161005-1
ii  ghostscript                                9.20~dfsg-1
ii  hplip                                      3.16.10+repack0-1
ii  poppler-utils                              0.48.0-2
ii  printer-driver-gutenprint                  5.2.11-1+b1
ii  printer-driver-hpcups                      3.16.10+repack0-1
pn  smbclient                                  <none>
ii  udev                                       232-7

-- no debconf information

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: