Releases: apple/cups
Releases · apple/cups
v1.1.20rc4
Changes in CUPS v1.1.20rc4:
- The scheduler did not move the incoming job attributes in the operation group to the job group (Issue #335)
- The cupsDoFileRequest() function did not check for an early HTTP response while sending the file (Issue #314)
- The web interfaces did not quote #, ?, or . in printer names, which caused some problems with the generated URLs (Issue #320)
- CUPS couldn't be completely compiled with the -dDEBUG option (Issue #331)
v1.1.20rc2
Changes in CUPS v1.1.20rc2:
- The serial backend set the IXANY option on the port for XON/XOFF flow control; this caused problems with printers that returned status info but were not ready for more print data (Issue #287)
- The scheduler didn't support scripted index files (index.php, index.pl, etc. - Issue #290)
- The scheduler did not correctly localize script files with "GET" variables (Issue #268)
- Changes in job classification are now logged (Issue #289)
- Fixed a few more SLP-related bugs (Issue #259)
- Updated the user/group configure checks for MacOS X 10.3 (Issue #270)
- Fixed an offset bug in the PDF filter (Issue #284)
- The cupsDoRequest() and cupsDoFileRequest() functions did not map several HTTP status codes to their IPP counterparts. This made detecting certain conditions very difficult (Issue #277)
- Config, spool, and status files are now owned by the scheduler user (usually root) with read permission for the filter group (Issue #283)
- The HP-GL/2 filter did not support the SI command, some values for the AD and SD commands, and did not rotate labels properly via the DI command (Issue #282)
- The fax support did not update/set the job-hold-until attribute when a fax job fails (Issue #269)
- The cupsLangGet() function didn't support locales of the form "ll.charset" (Issue #271)
- The scheduler did not use the charset when getting the language localization for a request; this caused extra disk IO for every request (Issue #271)
- The scheduler did not support requests with more than one language specified (Issue #267)
v1.1.20rc1
Changes in CUPS v1.1.20rc1:
- The scheduler now waits up to 60 seconds before restarting to allow active jobs to complete printing and pending requests to be processed (Issue #226)
- The web interface did not work on systems where time_t is 64 bits (Issue #262)
- Added backend tweeks and content-length check from Red Hat (Issue #253)
- The USB backend now uses the 8255 constants instead of the standard constants when reporting printer status bits on Linux (Issue #254)
- Added new cupsDoAuthentication(), cupsGetFd(), cupsGetFile(), cupsPutFd(), and cupsPutFile() functions to the CUPS API (Issue #112)
- The PDF filter always scaled and offset pages; this caused problems under MacOS X, so now the "fitplot" option controls whether PDF files are scaled to fit within the printable area of the page (Issue #250)
- The LPD backend did not support the port number in a URI (Issue #247)
- Some filters didn't properly support boolean options (Issue #249)
- Landscape PDF files were not always offset by the correct amount when rotating (Issue #243)
- The scheduler could hang in a call to localtime() when logging messages from the signal handler (Issue #242)
- The PDF filter no longer prints form widgets; this duplicates the behavior of Acrobat Reader (Issue #241)
- cupsGetPPD() didn't handle a late termination of a HTTP connection with the server (Issue #220)
- ppdOpen() did not correctly check for "*PPD-Adobe-4." on the first line of a PPD file. This caused incorrect PASS results for some PPD files (Issue #233)
- cupsEncodeOptions() did not allow boolean options to use "yes" and "on" for true values (Issue #227)
- The pstops filter only sent the TBCP exit sequence if it was defined in the JCLEnd attribute in the PPD file (Issue #224)
- Support for more than 1024 files was broken on Solaris 9 (Issue #217)
- The setgroups() calls now pass in 1 group (the configured group) instead of 0 for compatibility with BSD and Darwin (Issue #213)
- The scheduler's built-in broadcast throttling was ineffective since incoming packets would cause the next group of outgoing packets to be sent immediately rather than waiting for the next time slot (Issue #211)
- Added a new ppdSetConformance() function to set the conformance requirements for PPD files. Currently only two levels are defined, PPD_CONFORM_RELAXED and PPD_CONFORM_STRICT, and the default is the relaxed level (Issue #212)
- The IPP backend did not correctly execute the pictwpstops filter on OSX (Issue #210)
- The LPD backend did not set the banner class when the "banner=yes" option was specified in the device URI (Issue #209)
- The imagetoraster filter did not support all of the page device attributes (Issue #208)
- The pdftops filter incorrectly auto-rotated pages when the user already had specified the proper orientation (Issue #207)
- Fixed AIX shared library support (Issue #201)
- Added support for live testing with Valgrind (Issue #193)
- The CGI programs now collect the list of needed attributes for the class, job, and printer template files (Issue #192)
- The scheduler now passes the first port that is bound to the local loopback or "any" addresses to the CGI programs rather than the port that the browser connected to (Issue #103)
- The cupstestppd program now checks for bad JobPatchFile attributes and incorrect versions of the Manufacturer attribute for HP printers (Issue #155)
- The filter makefile incorrectly installed libcupsimage.a in the filter directory (Issue #180)
- The scheduler did not verify that the job history files define the job-priority and job-originating-user-name attributes (Issue #178)
- The pstops filter didn't handle poorly-formed binary PostScript files that had CTRL-D's in them (Issue #156)
- The ppdOpen*() and cupsLangGet() functions did not make a copy of the old locale strings when using the POSIX locale when reading files, which apparently caused problems with some implementations of the standard C library. (Issue #159)
- The pdftops filter did not work properly with some embedded Type1C fonts (Issue #177)
- Updated the pdftops filter to be based upon Xpdf 2.02pl1 (Issue #191)
- The scheduler did not reset the group list when running CGI and filter processes (Issue #185)
- The scheduler no longer calls malloc and free from the signal handlers (Issue #190)
- The USB backend now uses the manufacturer and model strings if the description string is not available (Issue #174)
- The ppdOpen functions still supported the VariablePaperSize attribute, which was removed in v4.0 of the PPD spec. This caused problems with PPD files that relocated the PageSize option to a non-standard group (Issue #158)
- The cups.list file referenced MAN1EXT, MAN3EXT, and MAN5EXT, but none of those were actually defined (Issue #147)
- Chunked requests could cause a Denial of Service if the connection is terminated before the first byte of chunk data is sent/received (Issue #143)
- Printers with special characters in their names were not accessible from the web interface (Issue #120)
- The lpstat command now shows the correct interface script or PPD file, if any, for a print queue (Issue #89)
- The lpstat command now shows the printer-state-message and printer-state-reasons attributes whenever they are not blank (Issue #152)
- The French and German option-conflict.tmpl template files did not get installed (Issue #148)
- The cups.list.in file did not work when compiling without shared libraries (Issue #149)
- The DSOFLAGS included the LDFLAGS, which causes problems on at least HP-UX (Issue #150)
- The fax printer support did not keep track of the fax capability bit (Issue #144)
- The appleLangDefault() function could leak a small amount of memory (Issue #145)
- The ppdOpen() functions now mirror all normal attributes to the attribute list; previously only certain unassigned attributes would be added (Issue #139)
- The ppdEmitJCL() function wrote JCL commands to stdout instead of the passed file pointer (Issue #142)
- The httpGets() function could, in certain states, block waiting for data (Issue #132)
- The cupsEmitJCL() function not outputs an empty @pjl command after the PJL language escape to work around bugs in certain PJL implementations (Issue #131)
- The cupsEmit*() functions didn't set the orientation value properly (Issue #127)
- The cups.spec file didn't list the rc2.d init directory or the cupstestppd file (Issue #134)
v1.1.20
Changes in CUPS v1.1.20:
- The pstops filter didn't properly handle collated, duplexed copies of documents with an odd number of pages on printers that did not do their own collated copies (Issue #389)
- Tru64 doesn't define a prototype for hstrerror() (Issue #430)
- Updated the pdftops filter to use the annotation flags instead of the subtype to determine whether to print an annotation (Issue #425)
- The French web interface localization did not use absolute paths for the navigation bar (Issue #428)
- The CUPS test suite did not undefine the PRINTER and LPDEST environment variables. This could lead to bogus test results (Issue #380)
- The cupsLangDefault() function now works if you don't have the base OS localization installed (Issue #418)
- The pdftops filter no longer needs to create temporary files with tmpnam (Issue #406)
- The HTTP code did not use a case-insensitive comparison when checking for the Basic authentication method (Issue #407)
- The httpEncode() function always added a trailing "=" character, which is not required by the Base64 encoding specification (Issue #407)
- The signal handlers did not need to call sigset(); this caused a recursion problem on some versions of IRIX (Issue #422)
- Moved the scheduler termination code into the mainline to be consistent with the way other signals are handled (Issue #423)
- The cupsaddsmb program didn't export the new CUPS driver for Windows properly (Issue #390)
- The ppdOpen() functions did not issue an error when a translation string exceeded the maximum allowed by the Adobe PPD specification (Issue #399)
- The default landscape orientation was not the same as that defined in the PPD file (Issue #397)
- Updated the pstoraster patch files and CUPS driver to work with Ghostscript 8 (Issue #402)
- The hpgltops filter did not skip PJL commands (Issue #379)
v1.1.2
Changes in CUPS v1.1.2:
- Makefile/configure fixes
- RPM spec file and EPM list file fixes
- The cupsTempFile() function now uses a different algorithm for generating temp files and "reserves" them to avoid possible security exploitation.
- Now use /dev/random (if available) to seed the random number generator for certificates.
- The /var/spool/cups and /var/spool/cups/tmp directories were incorrectly owned by root; they are now owned by the filter user, typically "lp".
- The scheduler now resets the permissions on the spool and temp directories as needed to match the filter user.
- Now expose ppdCollect() as an externally callable function.
- The image filters now support filtering from the standard input.
- The imagetoraster filter now collects all printer options and job patch files and applies them to the page header as needed.
- Added format and banner options to LPD backend.
- The send-document operation didn't start a job immediately when last-document was true.
- The set-job-attributes operation didn't correctly replace the current job-hold-until value.
- Removed the option wrapper code from ppdEmit() and friends since it caused problems with Ghostscript and many PS printers.
- Was setting TZ environment variable twice for job filters.
- Added syslog logging in cups-lpd to aide in debugging problems.
- The HP-UX parallel port backend did not list the available parallel ports on some systems (printf calling problem...)
- The lp and lpr commands overrode user options if -d/-P were specified after -o.
- The scheduler would crash with a / filter.
- Added support for a "default" filter for unknown file types. The example provided in the mime.types and mime.convs file prints unknown files as if "-oraw" was specified for the job. This functionality is disabled by default.
- The "compatibility" mode fix for older backends did not work for smbspool. Added a workaround for it.
- The HP-GL/2 filter didn't perform the right pen scaling with some files and the "fitplot" option.
- New Software Performance Specification document that describes the memory, disk, and CPU usage of all the CUPS software.
v1.1.19rc5
Changes in CUPS v1.1.19rc5:
- Jobs with banner pages that were printed to implicit classes would get double banner pages for each file/banner in the job (Issue #68)
- The mime.convs file was missing the filter definition for Windows BMP (image/x-bitmap) files (Issue #85)
- The scheduler allowed some READ-ONLY job attributes to be set, which could cause the scheduler to fail on the next restart (Issue #82)
- The lp and lpr commands did not report when the scheduler was not responding; instead, the user would incorrectly see a "no default destination" error (Issue #70)
- cupsLangGet() could fail on OSX due to a corrupt language preference (Issue #78)
- Added more checks for HTTP request timeouts.
- The scheduler dropped the first non-alpha character after an open brace when doing attribute substitutions in banner pages (Issue #77)
- The scheduler child might send SIGUSR1 to the parent before the signal handler was installed; this didn't prevent the scheduler from starting but produced an annoying error message (Issue #45)
v1.1.19rc4
Changes in CUPS v1.1.19rc4:
- The lp command did not accept "-" for printing from the standard input as required by POSIX 1003.1 (Issue #59)
- Added the job-originating-host-name information for the page_log file documentation in the SAM (Issue #31)
- The German web interface templates did not use the right paths for job operations (Issue #54)
- The scheduler would consume all available CPU if started with a pending job in the queue (Issue #35)
- The polling daemon allocated an extra localization buffer but did not free it, causing cups-polld to eventually use all available memory (Issue #40)
v1.1.19rc3
Changes in CUPS v1.1.19rc3:
- The scheduler could get in an infinite loop cancelling jobs using "cancel -u user dest" (Issue #48)
- The "cancel -u user" command did nothing (it should cancel all jobs on all printers owned by the named user - Issue #48)
- The scheduler would write 0-length job control files (Issue #46)
- Updated the French man pages (translation provided by Gilles QUERRET)
- The scheduler would delete all printers from printers.conf if a job was active when a HUP signal was handled (Issue #47)
- The cups-polld program would leak memory if it was unable to send browse packets to the loopback interface (Issue #40)
- The scheduler did not put the job-originating-host-name attribute in the job attributes group.
- The text filter did not default to wrapping text as defined by the IPP implementation document.
- Scan backends first, PPDs second (Issue #37)
- Updated the Netatalk documentation in the SAM (Issue #38 and #39)
- The test suite sent text files to a non-PS print queue, which requires ESP Ghostscript (provided separately). Now send the JPEG test file (Issue #33)
- The test suite did not show the estimated disk space requirements (Issue #33)
- The test suite did not set the MaxLogSize directive to 0 to prevent log file rotation (Issue #33)
- The test suite still setup the old CUPS Ghostscript symlinks (Issue #33)
- The pstops filter did not report the correct number of copies for the page_log file when printing collated copies to a printer that doesn't support them in hardware (Issue #32)
- cupsLangGet() needs to set the CTYPE locale to "C" (POSIX) to avoid erroneous tolower/toupper values (fix suggested by Bjoern Jacke)
- Fixed a typo in the cups.list.in file.
- Updated all of the Western European locales to default to ISO-8859-15 (for Euro support, suggested by Bjoern Jacke)
- Updated the German message catalog (update provided by Bjoern Jacke)
v1.1.19rc2
Changes in CUPS v1.1.19rc2:
- cupsLangGet() now sets the encoding field based on the trailing charset in the locale name, and doesn't look for a message catalog in a specific locale.charset directory. This fixes Issue #26 and is more in line with the CUPS 1.2 implementation.
- The configure script now aborts if the "ar" command or compilers cannot be found.
- The static cupsimage library was not built by default.
- The path for the "ln" command was hardcoded in Makedefs.in instead of being checked at configure time (Issue #28).
- Banner pages containing unescaped { characters would not work.
- The printer-state-time collection attribute was encoded as an enumeration instead of an integer.
- The printer-is-accepting-jobs collection attribute was was not added to the collection value.
- The printer-state-sequence-number collection attribute was not added to the collection value.
- Fixed typo and const mismatch in IPP backend.
- Updated the man pages for the new configuration directives.
- Updated the SAM for MacOS 10.2, the CUPS drivers for windows, the available LPD backend options, and the new configuration directives.
- The imagetops filter didn't position images properly on the page (Issue #18)
- The configure script didn't add CPPFLAGS to the compiler options or LDFLAGS to the DSO options (Issue #13)
- The scheduler would try to write a debug log message when starting a job that contained a NULL string. Since not all versions of snprintf() support NULL string pointers this caused some problems (Issue #20)
- The testipp program now supports reading of IPP message files such as those used for the job history in /var/spool/cups.
v1.1.19rc1
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 sched...