This release adds some new features to cups-browsed and to the driverless utility: Both now use DNS-SD-service-name-based URIs for IPP print queues, like CUPS does. These URis are independent of network interfaces and ports and so make providing IPP services on the local machine (Printer Applications) easier. cups-browsed creates large numbers of local queues in portions now, so that it can treat jobs to print clusters between the portions, this makes printing more reliable in large networks with many printers. In addition, a lot of bugs got fixed.
- cups-browsed: When generating local queues for printers for which the local CUPS daemon would provide temporary queues use the PPDs generated by libcupsfilters and not the ones generated by CUPS. The PPD generation of libcupsfilters also works with IPP-1.x-only printers, printers which do not support to query "media-col-database" and printers which support driverless printing only via PCLm. This can be changed via the "UseCUPSGeneratedPPDs" directive in cups-browsed.conf (Issue #22).
- libcupsfilters: Re-structured the get_printer_attributes() function to remove the recursive calls for the fallbacks, to check required attributes in the response only if requested, and to fully integrate the method of getting a suitable response for a full printer capability list also if the printer is only IPP 1.1 or does not support the "media-col-database" attribute (Issue #22, Issue #163).
- libcupsfilters, cups-browsed, driverless: Moved the funtions get_printer_attributes() and resolve_uri() from cups-browsed into libcupsfilters, to share them with the driverless utility (Issue #22).
- implicitclass: Fixed wrong stdout redirection from the filters to the IPP backend and hard-coded path for "ipp" backend call (Possible fix for Issue #163, Issue #181).
- cups-browsed, driverless: Use DNS-SD-service-name-based URIs instead of host-name-based ones, as CUPS also does. In cups-browsed one can switch back to the conventional host-name-based URIs via the new "DNSSDBasedDeviceURIs" configuration option. Note that cups-browsed always uses conventional URIs for printers discovered via legacy CUPS browsing or LDAP.
- cups-browsed: When removing a CUPS queue, do not consider an error (and retry) if the queue does not actually exist. Also ignore errors when checking whether there are still jobs. This way when a new queue gets created and the generation of the PPD file fails the attempt to remove this non-existing queueu when removing the printer entry does not cause any problem.
- cups-browsed: Improved the fallback mechanism of the get_printer_attributes() function. Instead of considering the request failed by the content of the response only when not more than the two language atrributes come out, we check through a list of required attributes whether they are all there. In addition, we actually fail when all callbacks have failed (Issue #22).
- cups-browsed: Introduced new configuration options "UpdateCUPSQueuesMaxPerCall" and "PauseBetweenCUPSQueueUpdates" to limit the amount of local CUPS queues created, modified, or removed in a single event callback. Before, when there were thousands of printers in the network, cups-browsed got blocked for other tasks, like assigning a destination printer for a cluster print job (Issue #163).