github apple/cups release-1.1.9
v1.1.9
on GitHub

Changes in CUPS v1.1.9:

  • Revamped the configure script to use a modular approach for the various tests.
  • Added –with-openssl-* options to properly reference the OpenSSL libraries in DSOs.
  • Added –with-cups-user and –with-cups-group options to specify the default user and group for CUPS.
  • Added AIX shared library support.
  • Added AIX device discovery for the serial and parallel ports.
  • Now use install program or script to install directories, files, and symlinks.
  • Updated pstops filter to use strict handling of EPS files embedded in a PostScript document. The %%EOF handling in 1.1.8 caused some dvips files not to print.
  • Fixed yet another memory allocation bug in pstoraster that would cause it to crash. This fix also ensures that all memory allocations are done on (at least) a 64-bit boundary.
  • Fixed Digest authentication - httpGetSubField() didn’t skip the Digest keyword.
  • The scheduler did not properly handle Digest authentication with the new multiple-group support.
  • The scheduler did not allow usernames that were not in the UNIX password file to be used for Digest authentication from passwd.md5.
  • The scheduler could not scan PPD files that only used a carriage return (i.e. MacOS PPD files); the new code is also about 40% faster, so servers with thousands of PPD files should start much faster now.
  • The scheduler now stores the PPD file size and modification times in the ppds.dat file, so it can now incrementally update the PPD database from the model directory, resulting in significantly faster startup times.
  • The lpinfo command did not return a non-zero status code if an error occurred.
  • Fixed a bug in the scheduler’s UpdateJob() function. Basically, all jobs shared the same status buffer, and the “buffer start” pointer could point to 1 byte before the beginning of the buffer. The new implementation uses a separate buffer for each job and eliminates the buffer start bug.
  • The IPP backend would send N copies of a document if the receiving device didn’t support the copies attribute, even if the upstream driver already added the necessary commands to generate the copies. This was most noticeable with HP printers where N * N copies would come out instead of N.
  • The PostScript filter (pstops) did not properly handle duplex printing on inkjet printers that provide this option. Copies would be put on the front and back sides of the duplexed page, and the filter did not output an even number of pages.
  • The backends always caught SIGTERM after they connected to the printer. This prevented raw jobs from being cancelled early.
  • The cupsSetDests() function now removes any printers, instances, and options that are not defined by the user or server. This should prevent old system-wide options from being used in individual user accounts.
  • Updated the EPSON printer driver and added PPDs for the newer EPSON Stylus printers that only support the “ESC i” graphics command.
  • The lpadmin command didn’t allow you to add remote printers to a local class.
  • The lpadmin command didn’t allow you to set the options (quotas, etc.) for a class.
  • The scheduler did not load or save the job-sheets-default attribute for classes.
  • The scheduler did not automatically recreate remote printers that were part of a class.
  • It was possible for a printer class to list the same printer more than once.
  • The scheduler now makes a backup copy of classes.conf and printers.conf before writing the new file.
  • The lppasswd program incorrectly asked for a new password when deleting an existing MD5 password account.
  • The scheduler did not match “/printers/name.ppd” against a location of “/printers/name”.
  • The client code did not always handle HTTP encryption upgrades properly.
  • The client code now caches the last Digest password so it can retry using a new resource path or nonce value, which are included in the MD5 sum sent to the server. This should eliminate unnecessary password prompts when using Digest authentication.
  • The lppasswd command didn’t have a man page.
  • Updated the PJL detection rules to allow the universal escape to occur anywhere in the first 128 bytes of the file.
  • The cups-polld program would poll servers continuously with no delay if there was an error contacting the server.
  • The IPP backend would send an empty job-name or requesting-user-name attribute if the corresponding job attribute was an empty string. While this is allowed by the IPP specification, some HP JetDirect implementations return a client-error-bad-request error if an empty name attribute value is received. The new code only sends these attributes if they are not the empty string.
  • At least some versions of the HP JetDirect firmware do not correctly implement IPP. Added additional checks to the IPP backend to eliminate extra, unsupported attributes which should normally be ignored by a compliant IPP device.
  • The scheduler did not copy the complete list of supported file types into the document-format-supported attribute. This caused clients to not send the local file type (such as application/vnd.cups-raw for raw print files) and the corresponding bad output in some cases.
  • The scheduler did not fully copy attributes from a set-job-attributes request - string attributes were only referenced, which could cause cupsd to crash or behave irratically.
  • The lp command didn’t send the right value for the job-hold-until attribute when “-H resume” was specified.
  • The IPP backend now returns as soon as a job is completed or reported as “pending-held”.
  • Added new ImplicitAnyClasses and HideImplicitMembers directives to the cupsd.conf file to make implicit classes more usable/transparent to the user.
  • Clients can now (with the appropriate authentication) retrieve and update the server configuration files using HTTP GET and PUT requests.
  • The web interface didn’t allow you to modify the location or description of the printer.
  • The pdftops filter now uses its own temporary file function to work with PDF files using LZW compression (which use the uncompress program or gunzip)
  • The SystemGroup directive now supports specification of multiple groups.
  • Added new Include directive to cupsd.conf, a la Apache.
  • Added new pseudo-driver/PPD called “raw” that can be used to create/convert a raw queue. This also allows raw queues to be created in the web interface.
  • The pdftops filter didn’t handle image objects that used JPEG and Flate compression together.
  • The pstops filter counted pages wrong when using the N-up and even/odd printing options. This prevented the page-ranges option from working properly.
  • Added another fix to pstoraster for a bus error condition caused by a lack of parenthesis in the Ghostscript code.
  • Added new “natural-scaling” option which scales the natural size of the image (percent of natural image size instead of percent of page size.)
  • The lppasswd program is now setuid to the CUPS user instead of root.
  • The PPD functions did not allow for PPD files that defined the page sizes and margins before the page size options.
  • The mime.types file now checks for the PJL “LANGUAGE = Postscript” command for PostScript files.
  • The scheduler did not truncate file: output files.
  • The PPD file reading code did not handle options with raw quotes (“) in the human-readable names.
  • The pdftops filter now remaps the space character when (bad) PDF files contain a .notdef glyph for the space character.
4 years ago