Hi,

recently some Ubuntu users complained about CUPS stopping after an idle timeout and then not restarting in certain situations, like when accessing CUPS' web interface. See


https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1598300

https://bugs.launchpad.net/ubuntu/+source/cups/+bug/1622707

https://github.com/apple/cups/issues/4874

The problem is that the systemd unit file for socket activation which comes with CUPS only supports triggering CUPS when it is accessed throu the domain socket file. It looks like this:

----------
[Unit]
Description=CUPS Scheduler

[Socket]
ListenStream=/var/run/cups/cups.sock

[Install]
WantedBy=sockets.target
----------

This works well enough for applications using libcups, as these applications access via the domain socket if CUPS is configured appropriately.

The web interface is called through a web browser and in a web browser you can only specify a host and a port, so the access to CUPS is through port 631. To make CUPS being fired up also in this case, a line "ListenStream=631" needs to get added:

----------
[Unit]
Description=CUPS Scheduler

[Socket]
ListenStream=/var/run/cups/cups.sock
ListenStream=631

[Install]
WantedBy=sockets.target
----------

Then I can access CUPS after it has shut down after the idle timeout, with both libcups-based applications (simplest example: "lpstat -r") and with the web interface.

WDYT? Should we add the "ListenStream=631" or should we create an additional unit file, like

----------
[Unit]
Description=CUPS Scheduler

[Socket]
ListenStream=631

[Install]
WantedBy=sockets.target
----------

and install it in addition to the original one, for example with the "cups" binary package which contains the CGI binaries of the web interface?

   Till

Reply via email to