The portreserve problem: is systemd the solution?

February 15th, 2012

Quite a while ago I wrote portreserve, a utility to prevent ports getting stolen at boot time by portmap. This would happen with CUPS, for example: portmap starts first (to allow for NFS-mounted filesystems), and calls bindresvport(). If the privileged (i.e. in the range 512-1023) port it allocates happens to be 631, when CUPS starts and tries to bind that port it fails. This didn’t just affect CUPS, but any service with a well known port in the privileged range.

Read the rest of this entry »

CUPS 1.6 changes ahead

February 6th, 2012

As I mentioned elsewhere, there are some changes ahead in CUPS 1.6. These changes are not imminent but give an indication of the direction the CUPS project is heading.

Back in 2007 CUPS became an Apple project.  Now the parts that are not relevant on Mac OS are being dropped, with some of the Linux-relevant parts being gathered together in a separate project, cups-filters.

Read the rest of this entry »

CUPS disabled on upgrade to Fedora 16

November 14th, 2011

One common bug that people are running into with Fedora 16 is that CUPS is no longer enabled after upgrade from an earlier version of Fedora (fresh installs are unaffected).

This has already been reported in Bugzilla, and a test update is available.

There is also an Ask Fedora answer about it.

Printing Test Day

October 5th, 2011

It’s that time again.  Fedora 16’s Printing Test Day is tomorrow, Thursday October 6th.  Come along and help make printing work better on Fedora!

The Test Day page has instructions on what you need and how to test.

D-Bus and Python: asynchronous method implementation

August 16th, 2011

This is a quick demonstration of how to implement a D-Bus method in Python using asynchronous callbacks.

I recently added support in system-config-printer for determining the best driver to use for a particular printer.  This is an expensive operation, largely because of the time it takes to get a list of available drivers from CUPS, and the Python program providing the D-Bus service also provides other services.  I wanted the program to be able to deal with other callers while the CUPS operation was in progress.  Here’s how that was done.

Read the rest of this entry »