github apple/cups release-1.1.19rc1
v1.1.19rc1
on GitHub

Changes in CUPS v1.1.19rc1:

  • Added CUPS support files for Java, Perl, and PHP (located in the “scripting” subdirectory…)
  • The scheduler now supports fast-reloads of the cupsd.conf file when it is updated via HTTP.
  • The scheduler always changed the ownership of log files; it now only does so if they are not in the /dev directory (i.e. don’t want to change the ownership and permissions of /dev/null…)
  • Added libpaper support (patch from Jeff Licquia)
  • Added a new istring() rule for MIME types files that does a case-insensitive comparison of strings.
  • The cups-lpd mini-daemon now sends jobs to the default queue when an empty queue name (or “lp” and there is no “lp” queue) is sent.
  • The scheduler now supports fax queues identified by a “*cupsFax: True” attribute in the PPD file. When a job can’t be sent, it is held for 5 minutes by default while other jobs are attempted. The FaxRetryLimit and FaxRetryInterval directives control the number of retries and the time between retries.
  • The scheduler now preserves the default options of PPD files when modifying/upgrading an existing PPD file. When installing a new printer, the scheduler sets the default media size to Letter or A4 as appropriate for your locale.
  • The scheduler no longer limits the number of BrowseAddress, BrowsePoll, BrowseRelay, Listen, Port, SSLListen, and SSLPort directives to 10.
  • The scheduler now supports print files that have been compressed using gzip.
  • The scheduler used the stdio functions to read any job ticket information in a PostScript print job. Since some platforms limit the number of stdio files to 256, job ticket information was ignored when the server had a large number of clients connected to the system.
  • Filters and backends may now report the total number of pages (“PAGE: total NNN”) to the scheduler.
  • The LPD backend now supports timeout and sanitize_title options (default to 300 and yes, respectively) and has some additional changes to reduce the chances of multiple copies being printed when only one copy was requested.
  • Fixed a polygon drawing bug in the HP-GL/2 filter.
  • Added a robots.txt file to the standard install to prevent search engines from indexing the CUPS server.
  • Added support for STATE: messages (printer-state-reasons), printer-state-history, and printer-state-time to the scheduler.
  • When using RunAsUser, the scheduler would initially start any previously queued (pending) jobs with RunAsUser disabled - all backends would be running as root.
  • If a backend failed for a printer, CUPS would incorrectly requeue the job for printing again.
  • Added support for IPP collections and files.
  • Added experimental support for generic CGI scripts and programs, Java, Perl, PHP, and Python to the scheduler. See the file “CGI.txt” for more information.
  • The CUPS API now supports HTTP cookies and the Expect: field.
  • The cancel command now correctly supports the “-u user” option to cancel all jobs for the named user.
  • The Purge-Jobs operation now supports the my-jobs boolean attribute and a new purge-jobs boolean attribute to control whether job history data is purged from the scheduler; the default is false for my-jobs and true for purge-jobs to match the original implementation.
  • The scheduler would not timeout printers when only using SLP browsing.
  • If the scheduler was unable to execute a filter, it would try to restart the job indefinitely until the filter could be executed.
  • When writing BSD printcap files, the scheduler now includes the rm and rp attributes, allowing the file to be exported to LPD clients. [Patch from Dominic Kubla]
  • The scheduler optimization to reference IPP attribute data instead of performing a full copy caused problems when the referenced data was deleted before it was sent. It now only references attributes that change only when the scheduler is restarted. The change also reduced the memory footprint of a printer object to 2k.
  • The scheduler now holds signals while logging messages to avoid potential deadlock issues when handling signals on Solaris 8.
  • The lpadmin command now allows printer access control by group name as well as user name.
  • “lpoptions -l” got in an infinite loop if no default printer was available.
  • The scheduler now logs the job-originating-host-name attribute in the page_log file, and uses “-” for any empty fields (patch from Dominik Kubla).
  • The pdftops filter now scales PDF pages within the printable area of the page.
  • The pstops filter didn’t include the page-label and classification boxes when printing EPS or non- conformant PS files.
  • The imagetops filter didn’t always correctly position the image on the page when printing in landscape orientation.
  • The ppdEmit() functions now support the RequiresPageRegion attribute when sending InputSlot and ManualFeed commands.
  • The PPD loading code now supports standard options outside of OpenUI/CloseUI as required by the PPD spec.
  • The cupstestppd program has been upgraded to provide a concise PASS/FAIL report, additional detailed conformance testing, and support for gzip’d PPD files.
  • The PPD loading code is now much more strict when loading a PPD file, and tracks more format errors.
  • The scheduler ignored child signals when gathering the list of available devices, when it should have been using the default signal handler.
  • The cupsEncodeOptions() function could encode an option with a NULL last string.
  • The socket backend could report the wrong number of backchannel bytes if an error occurred on the link.
  • The cups-polld program now only sleeps after getting all printers and classes. This allows for longer intervals without excessive delays before classes show up…
  • Added a new httpWait() function to support waiting for data for a specific number of milliseconds.
  • httpGets() now times out after 1 second on non-blocking HTTP connections.
  • The scheduler no longer accepts rangeOfInteger values that are out of order (e.g. 5-1)
  • The sides attribute was incorrectly sent as a name value; it is a keyword value.
  • The IPP backend now detects if the destination queue has gone away and reports an error.
  • The scheduler and HTTP API now allocate their select() sets to support larger numbers of clients on systems that support it.
  • The scheduler now sets the CFProcessPath environment variable under MacOS X.
  • The cupsLangDefault() function now uses the CoreFoundation localization API under MacOS X.
  • The httpSeparate() function didn’t handle file URIs of the form “file:///path” properly.
  • The lpadmin command now supports a “protocol” option for specifying the binary communications protocol to use when printing binary PostScript data.
  • The scheduler did not properly parse the SystemGroup directive, so only the first group would be used.
  • Revamped how strings are stored in the scheduler, providing a substantial improvement in memory usage for systems with large numbers of printers.
  • The PostScript filter now supports binary PostScript files and files beginning with the PJL language escape sequence.
  • The PPD API now provides additional information from the PPD file.
  • The USB backend didn’t compile on Solaris Intel.
  • The cupstestppd utility now supports the “-q” option (quiet) for use in scripts, etc.
  • Merged several weight-reducing changes into the CUPS baseline donated by Apple.
  • Added preliminary support for CDSA; patch provided by Apple.
  • Implicit classes are now created from identical printer classes on the network.
  • The lp command now supports a “-H restart” option to restart previously printed jobs. This functionality only works if you have enabled the PreserveJobFiles option.
  • The scheduler now supports URIs in HTTP request lines to conform to the HTTP/1.1 specification.
  • The time-at-xyz attributes were not recognized in banner files if prefixed by a question mark, e.g. “{?time-at-creation}”.
  • Added support for pre-filtering application/pictwps files on MacOS clients before sending them to a server via IPP.
  • The scheduler now allows file:/dev/null device URIs even if FileDevices is set to No.
  • CUPS uses strerror() for hostname resolution errors, when it should have used hstrerror().
  • The USB backend no longer tries to guess the serial number of a device from the USB devices file; this means that printers that don’t report their serial numbers in the device ID string will not be individually selectable.
  • The pstops filter didn’t handle page ranges properly when a page contained an embedded document.
  • Added a translation of the web interface to German.
  • When printing using the OutputOrder=Reverse option with duplexing, the output order is now truly reversed; the order of sub-pages when printing N-up is the same.
  • The pstops filter did not always output the extra blank page when printing a document with an odd number of pages with duplexing enabled.
  • The ippAddXYZ functions no longer allow the application to add less than 1 value.
  • Fixed a URL rewrite bug in the web interface - local access was sometimes redirected away from localhost…
  • The ppdOpen() functions could get in an infinite loop if the PPD file contained a keyword or text that was too large for the buffer.
  • Added preliminary support for GNU TLS; patch provided by Jeff Licquia.
  • Now timeout IPP attribute reads after 1 second inside an attribute definition.
  • Now timeout connections that have been shutdown (due to errors) after 30 seconds instead of the Timeout setting (300 seconds by default). This provides faster recovery from DoS attacks.
  • A denial-of-service attack warning message was being written to the log files by the scheduler for every detection. This caused a DoS of its own in some situations. The warning message is now written no more than once per minute.
  • Fixed the CIE colorspace support code in the image and PS RIPs.
  • The job-quota-period, job-page-limit, and job-k-limit attributes were not flagged as integers, so setting quotas would not work.
  • Added an additional response check in the scheduler to more quickly recover from denial-of-service attacks.
  • The cupstestppd file was incorrectly installed in the /usr/sbin directory instead of /usr/bin.
  • The EPM list file did not include the cupstestppd program or man page files.
4 years ago