Sean Kau [Thu, 17 Dec 2020 19:04:59 +0000 (11:04 -0800)]
backend/ipp: Change handling of job_canceled
job_canceled can be -1, 0, or 1. 0 indicates no error, 1 indicates
that we were cancelled in normal operations (user cancelled from
computer) and -1 indicates cancelled by printer. There is clearly
an assumption that -1 is false since there is a check for
job_canceled < 0 a few lines later.
BUG=b:174793115
TEST=Print to printer with malformed PWG-Raster content
Till Kamppeter [Wed, 26 Aug 2020 11:03:00 +0000 (13:03 +0200)]
Fix fax numbers supplied via GTK print dialog, removing a "Custom." prefix; do not choke if the GTK dialog sends "None" as phone number or pre-dial prefix
Till Kampetter [Tue, 9 Aug 2016 16:11:35 +0000 (18:11 +0200)]
Do not use host names for broadcasting print queues and
managing print queues broadcasted from other servers by default. Many
networks do not have valid host names for all machines.
Bug-Ubuntu: https://bugs.launchpad.net/bugs/449586
Patch-Name: do-not-broadcast-with-hostnames.patch
Tim Waugh [Tue, 9 Aug 2016 16:11:30 +0000 (18:11 +0200)]
Let snmp backend also use manufacturer-specific MIBs
… of HP and Ricoh to obtain the device IDs of network-connected
printers. This way we get more reliable information about make and model
and in addition the supported page description languages, which allows one to
identify whether an optional PostScript add-on is installed or for an
unsupported printer which generic PPD is the best choice (requested by
Ricoh).
Bug: https://github.com/apple/cups/issues/3552
Patch-Name: Let-snmp-backend-also-use-manufacturer-specific-MIBs.patch
Till Kamppeter [Sat, 22 Feb 2020 13:28:58 +0000 (14:28 +0100)]
Fix scheduler cupsd.conf load
When running it without arguments it is supposed to read the local CUPS's
cupsd.conf and show a summary of the setting. in CUPS 2.3.1 it shows a mess
with a lot of HTML inside and this is due to the fact that when loading the
file via HTTP using the /admin/cups/cupsd.conf path the scheduler calls the
admin.cgi program which returns the admin front page of the web admin
interface. cupsctl then tries to interpret that as the config file and displays
garbage. Even worse is if you run cupsctl with command line argument (one of
the five switches or a key=value pair) to change a setting. It seems to load
cupsd.conf again and gets again the HTML code of the web interface page.
cupsctl tries to interpret this again, producing garbage, adds the
user-supplied setting and writes all this back into cupsd.conf. Then it tries
to restart the scheduler which fails due to the broken config file.
The problem is that in the file scheduler/client.conf, in the function
get_file() the URI from the client is at first checked whether it begins with
"/admin/" and in this case the CGI program admin.cgi is responsible. Only after
that the check for "/admin/conf/cupsd.conf" comes and is never reached.
I have changed the order now appropriately and this way cupsctl works again.
Note that the problem only occurs if the web interface is active and the
cupsctl command is issued by a non-root user.
This is a regression caused by issue #5652.
Till Kamppeter [Mon, 17 Feb 2020 08:05:58 +0000 (09:05 +0100)]
Fix conversion of PPD InputSlot choice names
When I create a CUPS queue with a PPD file with choice names "Tray-1", "Tray-2",
... in the InputSlot option CUPS translates these names to double-dashed IPP
attribute names: "tray--1", "tray--2", ... in the "media-source" attribute, both
when passing a job to the printer with the IPP backend, making the printer
ignore the tray choice, and also when answering a get-printer-attributes IPP
request from a client. This happens when in the PPD a dash is followed by a
digit, as the pwg_unppdize_name() function in cups/ppd-cache.c inserts a dash
whenever a non-digit is followed by a digit in the PPD name. As IPP attribute
names generally never have double-dashes and also no dashes in the beginning or
the end of the name, I have modified the pwg_unppdize_name() function
appropriately.
Pranav Batra [Wed, 28 Oct 2020 04:14:16 +0000 (04:14 +0000)]
Fix handling of the output-bin and print-quality IPP attributes
The PPD generation code now works for printers that support a single
output bin. Also the PPD parsing code now parses the cupsPrintQuality
field which is generated by the PPD generation code.
Till Kamppeter [Mon, 12 Oct 2020 20:36:35 +0000 (22:36 +0200)]
Resolve DNS-SD URIs correctly also if they are from a service from localhost
If a service is only available locally, through the loopback device
("lo", "localhost"), like for example the IPP-over-USB daemon ipp-usb
or a Printer Application which is not sharing printers to the network,
the service cannot be accessed through the network host name but only
through the host name "localhost".
To make CUPS' DNS-SD-service-name-based device URIs working also with
these services we check whether the service comes through the loopback
interface and in this case we set the host name in the resolved
standard device URI to "localhost".
Michael R Sweet [Wed, 7 Oct 2020 20:37:52 +0000 (16:37 -0400)]
Fix default hostname on macOS - current versions of macOS use new ".lan" domain
for mDNS instead of ".local", which causes the IPP Everywhere self-certification
tests to fail.
cups/dests.c: cupsGetNamedDest() - set IPP_STATUS_ERROR_NOT_FOUND error if queue was not found
lp.c/lpr.c: check for IPP_STATUS_ERROR_NOT_FOUND and generate a proper message if hit