CHANGES.txt - 2008-07-21
------------------------

CHANGES IN CUPS V1.3.8

	- Documentation updates (STR #2785, STR #2861, STR #2862)
	- The scheduler did not add the ending job sheet when the
	  job was released.
	- The IPP backend did not relay marker-* attributes.
	- The CUPS GNOME/KDE menu item was not localized for
	  Chinese (STR #2880)
	- The CUPS GNOME/KDE menu item was not localized for
	  Japanese (STR #2876)
	- The cupstestppd utility reported mixed line endings for
	  Mac OS and Windows PPD files (STR #2874)
	- The pdftops filter did not print landscape orientation PDF
	  pages correctly on all printers (STR #2850)
	- The scheduler did not handle expiring of implicit classes
	  or their members properly, leading to a configuration where
	  one of the members would have a short name (STR #2766)
	- The scheduler and cupstestppd utilities did not support
	  cupsFilter and cupsPreFilter programs with spaces in their
	  names (STR #2866)
	- Removed unused variables and assignments found by the
	  LLVM "clang" tool.
	- Added NULL checks recommended by the LLVM "clang" tool.
	- The scheduler would crash if you started a printer that
	  pointed to a backend that did not exist (STR #2865)
	- The ppdLocalize functions incorrectly mapped all generic
	  locales to country-specific locales.
	- The cups-driverd program did not support Simplified Chinese
	  or Traditional Chinese language version strings (STR #2851)
	- Added an Indonesian translation (STR #2792)
	- Fixed a timing issue in the backends that could cause data
	  corruption with the CUPS_SC_CMD_DRAIN_OUTPUT side-channel
	  command (STR #2858)
	- The scheduler did not support "HostNameLookups" with all of
	  the boolean names (STR #2861)
	- Fixed a compile problem with glibc 2.8 (STR #2860)
	- The PostScript filter did not support %%IncludeFeature lines
	  in the page setup section of each page (STR #2831)
	- The scheduler did not generate printer-state events when the
	  default printer was changed (STR #2764)
	- cupstestppd incorrectly reported a warning about the PPD format
	  version in some locales (STR #2854)
	- cupsGetPPD() and friends incorrectly returned a PPD file for
	  a class with no printers.
	- The member-uris values for local printers in a class returned
	  by the scheduler did not reflect the connected hostname or
	  port.
	- The CUPS PHP extension was not thread-safe (STR #2828)
	- The scheduler incorrectly added the document-format-default
	  attribute to the list of "common" printer attributes, which
	  over time would slow down the printing system (STR #2755,
	  STR #2836)
	- The cups-deviced and cups-driverd helper programs did not set
	  the CFProcessPath environment variable on Mac OS X (STR #2837)
	- "lpstat -p" could report the wrong job as printing (STR #2845)
	- The scheduler would crash when some cupsd.conf directives
	  were missing values (STR #2849)
	- The web interface "move jobs" operation redirected users to
	  the wrong URL (STR #2815)
	- The Polish web interface translation contained errors
	  (STR #2815)
	- The scheduler did not report PostScript printer PPDs with
	  filters as PostScript devices.
	- The scheduler did not set the job document-format attribute
	  for jobs submitted using Create-Job and Send-Document.
	- cupsFileTell() did not work for log files opened in append
	  mode (STR #2810)
	- The scheduler did not set QUERY_STRING all of the time
	  for CGI scripts (STR #2781, STR #2816)
	- The scheduler now returns an error for bad job-sheets
	  values (STR #2775)
	- Authenticated remote printing did not work over domain
	  sockets (STR #2750)
	- The scheduler incorrectly logged errors for print filters
	  when a job was canceled (STR #2806, #2808)
	- The scheduler no longer allows multiple RSS subscriptions
	  with the same URI (STR #2789)
	- The scheduler now supports Kerberized printing with
	  multiple server names (STR #2783)
	- "Satisfy any" did not work in IPP policies (STR #2782)
	- The CUPS imaging library would crash with very large
	  images - more than 16Mx16M pixels (STR #2805)
	- The PNG image loading code would crash with large images
	  (STR #2790)
	- The scheduler did not limit the total number of filters.
	- The scheduler now ensures that the RSS directory has
	  the correct permissions.
	- The RSS notifier did not quote the feed URL in the RSS
	  file it created (STR #2801)
	- The web interface allowed the creation and cancellation
	  of RSS subscriptions without a username (STR #2774)
	- Increased the default MaxCopies value on Mac OS X to
	  9999 to match the limit imposed by the print dialog.
	- The scheduler did not reject requests with an empty
	  Content-Length field (STR #2787)
	- The scheduler did not log the current date and time and
	  did not escape special characters in request URIs when
	  logging bad requests to the access_log file (STR #2788)


CHANGES IN CUPS V1.3.7

	- CVE-2008-0047: cgiCompileSearch buffer overflow (STR #2729)
	- CVE-2008-1373: CUPS GIF image filter overflow (STR #2765)
	- Updated the "make check" tests to do a more thorough
	  automated test.
	- cups-driverd complained about missing directories (STR
	  #2777)
	- cupsaddsmb would leave the Samba username and password on
	  disk if no Windows drivers were installed (STR #2779)
	- The Linux USB backend used 100% CPU when a printer was
	  disconnected (STR #2769)
	- The sample raster drivers did not properly handle SIGTERM
	  (STR #2770)
	- The scheduler sent notify_post() messages too often on
	  Mac OS X.
	- Kerberos access to the web interface did not work
	  (STR #2748)
	- The scheduler did not support "AuthType Default" in IPP
	  policies (STR #2749)
	- The scheduler did not support the "HideImplicitMembers"
	  directive as documented (STR #2760)
	- "make check" didn't return a non-zero exit code on
	  error (STR #2758)
	- The scheduler incorrectly logged AUTH_foo environment
	  variables in debug mode (STR #2751)
	- The image filters inverted PBM files (STR #2746)
	- cupsctl would crash if the scheduler was not running
	  (STR #2741)
	- The scheduler could crash when printing using a port
	  monitor (STR #2742)
	- The scheduler would crash if PAM was broken (STR #2734)
	- The image filters did not work with some CMYK JPEG files
	  produced by Adobe applications (STR #2727)
	- The Mac OS X USB backend did not work with printers that
	  did not report a make or model.
	- The job-sheets option was not encoded properly (STR #2715)
	- The scheduler incorrectly complained about missing LSB
	  PPD directories.


CHANGES IN CUPS V1.3.6

	- Documentation updates (STR #2646, STR #2647, STR #2649)
	- Fixed a problem with the web interface "Use Kerberos
	  Authentication" check box (STR #2703)
	- The scheduler unconditionally overwrote the printer-state-
	  message with "process-name failed" when a filter or backend
	  failed, preventing a useful error message from being shown
	  to the user.
	- Policies on CUPS-Move-Job didn't work as expected (STR
	  #2699)
	- The configure script only supported D-BUS on Linux
	  (STR #2702)
	- The scheduler did not support </LimitExcept> (STR #2701)
	- The scheduler did not reset the job-hold-until attribute
	  after a job's hold time was reached.
	- The scheduler did not support printer supply attributes
	  (STR #1307)
	- The Kerberos credentials provided by some Windows KDCs
	  were still too large - now use a dynamic buffer to
	  support credentials up to 64k in size (STR #2695)
	- Printing a test page from the web interface incorrectly
	  defaulted to the "guest" user (STR #2688)
	- The cupsEncodeOptions2() function did not parse multiple-
	  value attribute values properly (STR #2690)
	- The scheduler incorrectly sent printer-stopped events for
	  status updates from the print filters (STR #2680)
	- The IPP backend could crash when handling printer errors
	  (STR #2667)
	- Multi-file jobs did not print to remote CUPS servers
	  (STR #2673)
	- The scheduler did not provide the Apple language ID to
	  job filters.
	- Kerberos authentication did not work with the web
	  interface (STR #2606, STR #2669)
	- The requesing-user-name-allowed and -denied functionality
	  did not work for Kerberos-authenticated usernames (STR
	  #2670)
	- CUPS didn't compile on HP-UX 11i (STR #2679)
	- cupsEncodeOptions2() did not handle option values like
	  "What's up, doc?" properly.
	- Added lots of memory allocation checks (Fortify)
	- The scheduler would crash if it was unable to add a job
	  file (Fortify)
	- ppdOpen*() did not check all memory allocations (Coverity)
	- ippReadIO() did not check all memory allocations (Coverity)
	- The PostScript filter did not detect read errors (Coverity)
	- The scheduler did not check for a missing job-sheets-completed
	  attribute when sending an event notification (Coverity)
	- "Set Printer Options" might not work with raw queues (Coverity)
	- cupsRasterInterpretPPD() could crash on certain PostScript
	  errors (Coverity)
	- The USB backend did not check for back-channel support
	  properly on all systems (Coverity)
	- Fixed memory leaks in the GIF and PNM image loading code
	  (Coverity)
	- Removed some dead code in the CUPS API and scheduler (Coverity)
	- Fixed two overflow bugs in the HP-GL/2 filter (Coverity)
	- Fixed another ASN1 string parsing bug (STR #2665)
	- The RSS notifier directory was not installed with the
	  correct permissions.
	- The standard CUPS backends could use 100% CPU while waiting
	  for print data (STR #2664)
	- Filename-based MIME rules did not work (STR #2659)
	- The cups-polld program did not exit if the scheduler crashed
	  (STR #2640)
	- The scheduler would crash if you tried to set the port-monitor
	  on a raw queue (STR #2639)
	- The scheduler could crash if a polled remote printer was
	  converted to a class (STR #2656)
	- The web interface and cupsctl did not correctly reflect
	  the "allow printing from the Internet" state (STR #2650)
	- The scheduler incorrectly treated MIME types as case-
	  sensitive (STR #2657)
	- The Java support classes did not send UTF-8 strings to
	  the scheduler (STR #2651)
	- The CGI code did not handle interrupted POST requests
	  properly (STR #2652)
	- The PostScript filter incorrectly handled number-up when
	  the number of pages was evenly divisible by the number-up
	  value.
	- The PDF filter incorrectly filtered pages when page-ranges
	  and number-up were both specified (STR #2643)
	- The IPP backend did not handle printing of pictwps files
	  to a non-Mac CUPS server properly.
	- The scheduler did not detect network interface changes
	  on operating systems other than Mac OS X (STR #2631)
	- The scheduler now logs the UNIX error message when it
	  is unable to create a request file such as a print job.
	- Added support for --enable-pie on Mac OS X.


CHANGES IN CUPS V1.3.5

	- The SNMP backend did not check for negative string
	  lengths (STR #2589)
	- The scheduler incorrectly removed auth-info attributes,
	  potentially leading to a loss of all options for a job.
	- The scheduler stopped sending CUPS browse packets on a
	  restart when using fixed addresses (STR #2618)
	- Fixed PDF filter security issues (CVE-2007-4352
	  CVE-2007-5392 CVE-2007-5393)
	- Changing settings would always change the DefaultAuthType
	  and Allow lines (STR #2580)
	- The scheduler would crash when submitting an undefined
	  format file from Samba with LogLevel debug2 (STR #2600)
	- The scheduler did not use poll() when epoll() was not
	  supported by the running kernel (STR #2582)
	- Fixed a compile problem with Heimdal Kerberos (STR #2592)
	- The USB backend now retries connections to a printer
	  indefinitely rather than stopping the queue.
	- Printers with untranslated JCL options were not exported
	  to Samba correctly (STR #2570)
	- The USB backend did not work with some Minolta USB
	  printers (STR #2604)
	- The strcasecmp() emulation code did not compile (STR
	  #2612)
	- The scheduler would crash if a job was sent to an empty
	  class (STR #2605)
	- The lpc command did not work in non-UTF-8 locales (STR
	  #2595)
	- Subscriptions for printer-stopped events also received
	  other state changes (STR #2572)
	- cupstestppd incorrectly reported translation errors for
	  the "en" locale.
	- ppdOpen() did not handle custom options properly when the
	  Custom attribute appeared before the OpenUI for that
	  option.
	- The scheduler could crash when deleting a printer or
	  listing old jobs.
	- The Mac OS X USB backend did not allow for requeuing of
	  jobs submitted to a class.
	- lpmove didn't accept a job ID by itself.
	- The scheduler incorrectly removed job history information
	  for remote print jobs.
	- The scheduler incorrectly sent the
	  "com.apple.printerListChanged" message for printer state
	  changes.
	- The PostScript filter drew the page borders (when enabled)
	  outside the imageable area.
	- The LPD and IPP backends did not default to the correct
	  port numbers when using alternate scheme names.
	- The scheduler incorrectly deleted hardwired remote
	  printers on system sleep.
	- The scheduler would abort if a bad browse protocol name
	  was listed in the cupsd.conf file.
	- The online cupsd.conf help file incorrectly showed
	  "dns-sd" instead of "dnssd" for Bonjour sharing.
	- The scheduler could crash changing the port-monitor value.
	- The scheduler generated CoreFoundation errors when run as
	  a background process.
	- When printing with number-up > 1, it was possible to get
	  an extra blank page.


CHANGES IN CUPS V1.3.4

	- Documentation updates (STR #2560, STR #2563, STR #2569)
	- CUPS now maps the "nb" locale to "no" on all platforms
	  (STR #2575)
	- CUPS did not work with a Windows 2003 R2 KDC (STR #2568)
	- ippReadIO() could read past the end of a buffer (STR
	  #2561)
	- The scheduler would crash on shutdown if it was unable
	  to create a Kerberos context.
	- Multiple AuthTypes in cupsd.conf did not work (STR
	  #2545)
	- The snmp.conf file referenced the wrong man page (STR
	  #2564)
	- The cupsaddsmb program didn't handle domain sockets
	  properly (STR #2556)
	- The scheduler now validates device URIs when adding
	  printers.
	- Updated httpSeparateURI() to support hostnames with
	  the backslash character.
	- Updated the Japanese localization (STR #2546)
	- The parallel backend now gets the current IEEE-1284
	  device ID string on Linux (STR #2553)
	- The IPP backend now checks the job status at
	  variable intervals (from 1 to 10 seconds) instead
	  of every 10 seconds for faster remote printing
	  (STR #2548)
	- "lpr -p" and "lpr -l" did not work (STR #2544)
	- Compilation failed when a previous version of CUPS
	  was installed and was included in the SSL include
	  path (STR #2538)
	- The scheduler did not reject requests with charsets
	  other than US-ASCII or UTF-8, and the CUPS API
	  incorrectly passed the locale charset to the scheduler
	  instead of UTF-8 (STR #2537)
	- cups-deviced did not filter out duplicate devices.
	- The AppleTalk backend incorrectly added a scheme
	  listing when AppleTalk was disabled or no printers
	  were found.
	- The PostScript filter generated N^2 copies when the
	  printer supported collated copies and user requested
	  reverse-order output.
	- The scheduler did not reprint all of the files in a
	  job that was held.
	- The scheduler did not update the printcap file after
	  removing stale remote queues.
	- The cupsd.conf man page incorrectly referenced
	  "AuthType Kerberos" instead of "AuthType Negotiate".


CHANGES IN CUPS V1.3.3

	- The scheduler did not use the attributes-natural-language
	  attribute when passing the LANG environment variable to
	  cups-deviced or cups-driverd.
	- The scheduler did not use the printer-op-policy when
	  modifying classes or printers (STR #2525)
	- The auth-info-required attribute was not always updated
	  for remote queues that required authentication.
	- The German web interface localization contained errors
	  (STR #2523)
	- The Swedish localization contained errors (STR #2522)


CHANGES IN CUPS V1.3.2

	- The 1.3.1 release was incorrectly created from the
	  1.4.x source tree (STR #2519)
	- Added support for 32/64-bit libraries on HP-UX
	  (STR #2520)
	- The scheduler incorrectly used portrait as the default
	  orientation (STR #2513)
	- The scheduler no longer writes the printcap file for
	  every remote printer update (STR #2512)
	- Remote raw printing with multiple copies did not work
	  (STR #2518)
	- Updated the configure script to require at least autoconf
	  2.60 (STR #2515)
	- Some gzip'd PPD files were not read in their entirety
	  (STR #2510)


CHANGES IN CUPS V1.3.1

	- Documentation updates.
	- The USB backend on Mac OS X could hang if the driver and
	  printer did not match.
	- Delegated Kerberos credentials were not working.
	- "make distclean" incorrectly removed the edit-config.tmpl
	  files (STR #2508)
	- Fix compile problem on HP-UX (STR #2501)
	- The cupstestppd utility now tests for resolutions greater
	  than 99999 DPI to detect a missing  "x" between the X and Y
	  resolutions.
	- Fixed many problems in the various translations and added
	  a new "checkpo" utility to validate them.
	- The cupstestppd utility now tests the custom page size code
	  for CUPS raster drivers.
	- cupsLangDefault() did not attempt to return a language that
	  was supported by the calling application.
	- If a remote printer stopped while a job was being sent, the
	  local queue would also get stopped and the job re-queued,
	  resulting in duplicate prints in some cases.
	- A few Apple-specific job options needed to be omitted when
	  printing a banner page.
	- The new peer credential support did not compile on FreeBSD
	  (STR #2495)
	- Direct links to help files did not set the current section
	  so the table-of-contents was not shown.
	- The configure script did not support --localedir=foo (STR #2488)
	- The backends were not displaying their localized messages.
	- CUPS-Authenticate-Job did not require Kerberos authentication
	  on queues protected by Kerberos.
	- The Zebra ZPL driver did not work with Brady label printers
	  (STR #2487)
	- Norwegian wasn't localized on Mac OS X.
	- getnameinfo() returns an error on some systems when DNS is
	  not available, leading to numerous problems (STR #2486)
	- The cupsfilter command did not work properly on Mac OS X.
	- The scheduler makefile contained a typo (STR #2483)
	- The TBCP and BCP port monitors did not handle the trailing
	  CTRL-D in some PostScript output properly.
	- Fixed the localization instructions and German template for
	  the "Find New Printers" button (STR #2478)
	- The web interface did not work with the Chinese localization
	  (STR #2477)
	- The web interface home page did not work for languages that
	  were only partially localized (STR #2472)
	- Updated the Spanish web interface localization (STR #2473)
	- ppdLocalize() did not work for country-specific localizations.


CHANGES IN CUPS V1.3.0

	- The scheduler did not handle out-of-file conditions
	  gracefully when accepting new connections, leading to
	  heavy CPU usage.
	- The scheduler did not detect ServerBin misconfigurations
	  (STR #2470)
	- "AuthType Default" did not work as expected when the
	  "DefaultAuthType foo" line appeared after it in the
	  cupsd.conf file.
	- The on-line help did not describe many common printing
	  options (STR #1846)
	- The IPP backend did not return the "auth required" status
	  when printing to a Kerberos-protected queue.
	- The scheduler was not looking in the correct directories
	  for LSB PPD files (STR #2464)
	- Changed references to ESP Ghostscript to GPL Ghostscript
	  (STR #2463)
	- The PostScript filter did not cleanly terminate when
	  the job was canceled or stopped.
	- Fixed generation of Kerberos credentials for remote
	  printing.  Note that this requires a recent version of
	  MIT Kerberos with a working krb5_cc_new_unique()
	  function or Heimdal Kerberos.
	- Added Portuguese and updated Italian message catalogs.


CHANGES IN CUPS V1.3rc2

	- Added more range checking to the pdftops filter. 
	- The scheduler would crash if a remote IPP queue was stopped
	  (STR #2460)
	- The scheduler did not allow "DefaultAuthType None".


CHANGES IN CUPS V1.3rc1

	- Updated the German localization (STR #2443)
	- cupsAdminGetServerSettings() did not handle </Foo> properly.
	- When lprm and cancel are run with no job ID, they now will
	  cancel the first stopped job if no pending or processing
	  jobs are left in the queue.
	- The scheduler now logs successful print jobs, filter
	  failures, and the job file types at the default log
	  level (STR #2458)
	- The scheduler now logs the usernames it is using for
	  authorization at LogLevel debug instead of debug2 (STR #2448)
	- Added Intellitech Intellibar and Zebra CPCL PPDs to the list
	  of installed PPDs.
	- Added 6" and 8" wide label sizes for the Zebra ZPL Label
	  Printer driver (STR #2442)
	- The cupsaddsmb program and web interface now support
	  exporting of 64-bit Windows drivers, when available
	  (STR #2439)
	- Moving a job that was printing did not stop the job on the
	  original printer (STR #2262)
	- The cups-lpd mini-daemon did not work on Mac OS X server.
	- Added httpGetAuthString() and httpSetAuthString() APIs to get
	  and set the current (cached) authorization string to use for
	  HTTP requests.
	- Updated the default cupsd.conf policy to list the
	  "administrative" operations separately from the "printer
	  control" operations so that it is easier to define a
	  group of users that are "printer operators".
	- The web interface now pulls the default cupsd.conf file
	  from cupsd.conf.default in the CUPS config directory.
	- Added a help file for using Kerberos with CUPS.
	- The scheduler now strips the "@KDC" portion of Kerberos
	  usernames since those usernames typically do not appear in
	  the group membership lists used by CUPS.
	- cupsMarkOptions() could (incorrectly) leave multiple option
	  choices marked.
	- Backends could (incorrectly) run as root during discovery
	  (STR #2454)
	- Avahi is now supported for DNS-SD (Bonjour) printer sharing
	  (STR #2455)
	- The default cupsd.conf file had typos and old operation names
	  (STR #2450)
	- The scheduler now erases authentication cache files using the
	  7-pass US DoD algorithm.
	- Delegated Kerberos credentials (proxy authentication) did not
	  work.
	- The filter makefile did not optimize the libcupsimage.2.dylib
	  with a sectorder file.
	- The IPP backend incorrectly wrote an empty printer message
	  when processing the "none" state reason.
	- The USB backend could deadlock on Mac OS X while performing
	  a side-channel command.
	- The scheduler did not prevent remote queues from being
	  shared/published.
	- The scheduler did not remove the temporary request file on
	  authentication errors.
	- ppdLocalizeIPPReason() did not handle "scheme:" schemes or
	  "file" URLs.
	- ppdLocalizeIPPReason() was not exported on Mac OS X.


CHANGES IN CUPS V1.3b1

	- Copyright updates - CUPS is now owned by Apple Inc.
	- Documentation updates (STR #1775, STR #2027, STR #2130,
	  STR #2131, STR #2263, STR #2356, STR #2397)
	- Added new cupsfilter utility (STR #1734)
	- Added new job-printer-state-message and
	  job-printer-state-reasons attributes to jobs (STR #2418)
	- Added LDAP+SSL support (STR #1967)
	- CUPS now supports authentication via peer credentials
	  over domain sockets (STR #2242, STR #2277)
	- The CUPS sample driver PPDs are now generated by the PPD
	  compiler and include all of the localized languages by
	  default (STR #2164)
	- You can now specify "AuthType Default" in the cupsd.conf
	  file to use the default authentication defined by the
	  DefaultAuthType directive.
	- The SNMP backend no longer adds a default Address line
	  when none is specified in the snmp.conf file; this allows
	  the backend to be easily disabled as needed (STR #2434)
	- Added a new cupsctl command for doing basic changes to
	  the cupsd.conf file (STR #1777)
	- Added a new ppdLocalizeIPPReason() function to get the
	  localized text/URI for a given IPP reason keyword for a
	  driver.
	- Removed the deskjet2.ppd driver, as it only worked with
	  a very small subset of HP DeskJet printers and was
	  confusing to users.  The rastertohp driver still
	  supports the deskjet2.ppd options for existing queues.
	- The scheduler did not add a trailing banner page if a
	  client did not specify the last document in a job (STR
	  #1711)
	- The scheduler did not report Bonjour shared printers as
	  remote printers (STR #2384)
	- Added new -R and -W options to the cupstestppd program
	  for greater control over the testing of PPDs.
	- Added a new cupsGetServerPPD() function for getting
	  an available PPD from the server (STR #2334)
	- Added a new cupsDoIORequest() function for reading
	  and writing files via IPP requests (STR #2334)
	- Added a new CUPS_GET_PPD operation for getting an
	  available PPD file on the server (STR #2334) 
	- CUPS_GET_PPDS now reports multiple ppd-product values
	  based on the PPD ModelName and Product strings (STR
	  #2334, STR #2383)
	- CUPS_GET_PPDS now reports the PSVersion attributes
	  from a PPD file in the ppd-psversion attribute
	  (STR #2334)
	- CUPS_GET_PPDS now reports the cupsModelNumber attribute
	  from a PPD file in the ppd-model-number attribute (STR
	  #2383)
	- CUPS_GET_PPDS now reports a driver type string in the
	  ppd-type attribute based on the cupsFax and cupsFilter
	  attributes in a PPD file (STR #2383)
	- Added a new printer attribute called "cups-version"
	  which reports the version of CUPS that is running
	  (STR #2240)
	- backendRunLoop() now aborts immediately on SIGTERM
	  if no data has been written yet (STR #2103)
	- Due to poor IPP support from the vendors, the SNMP
	  backend no longer tries IPP connections; instead,
	  it now uses a lookup file with fallback to port 9100
	  (socket://address) and 515 (lpd://address) printing
	  (STR #2035, STR #2354) 
	- The scheduler now recreates the CUPS log directory as
	  needed (STR #2353)
	- cupsLangDefault() now maps new-style Apple locale names
	  to the traditional ll_CC form (STR #2357)
        - Add new cupsArrayNew2() API to support hashed lookups
          of array elements (STR #2358)
        - ppdConflicts() optimizations (STR #2358)
	- The cupstestppd program now tests for existing filters,
	  icons, profiles, and dialog extensions (STR #2326)
	- The web interface no longer lists new printers on the
	  main administration page.  Instead, a new "List Available
	  Printers" button is provided that shows a separate page
	  with the list of printers.
	- The web interface now supports setting the banner and
	  policy options on raw printers and classes (STR #2238)
	- The socket backend now reads any pending back-channel
	  data before shutting down the socket (STR #2325)
	- Added a new ErrorPolicy directive in the cupsd.conf
	  file (STR #1871)
	- Printers that use JCL options are now exported to Samba
	  correctly (STR #1985)
	- The IPP backend now relays printer-state-message values
	  from the server to the client (STR #2109)
	- Added support for the PWG printer-alert and
	  printer-alert-description attributes (STR #2088)
	- Added support for LPD "stream" mode (STR #2036)
	- The scheduler now reports the PostScript product string
	  from PPD files in CUPS-Get-PPDs responses (STR #1900)
	- Raw printing with queues pointing to the file pseudo-
	  device and multiple files and/or banners now works (STR
	  #1933)
	- Added new public cupsAdminGetServerSettings() and
	  cupsAdminSetServerSettings() APIs.
	- Added new "makebuttons" script in the "tools" directory
	  for creating web interface buttons (STR #2231)
	- Added support for DNS-SD (aka "Bonjour") printer sharing
	  (STR #1171)
	- Job operations (cancel, hold, release, etc.) from the
	  web interface now return back to the original page (STR
	  #2239)
	- The classes or printers list is now shown after a
	  successful deletion from the web interface (STR #1999)
	- The default configuration now allows browse packets from
	  any address (STR #2008)
	- The web interface now provides an "allow printing from the
	  Internet" check box (STR #1897)
	- The notify-events-default and
	  notify-lease-duration-default attributes can now be set
	  (STR #1671)
	- Server-side default options are now sent to clients when
	  the "printer-defaults" attribute group is requested (STR
	  #1923)
	- Added support for Linux "relro" linker option (STR #1614)
	- CUPS now validates the number-up option value (STR #1329)
	- The on-line help now provides better search capabilities
	  (STR #1701)
	- The web interface "Add This Printer" button now allows you
	  to change the printer name, description,  and location
	  (STR #1646)
	- Added support for Mac OS X authorization services
	  (STR #2206)
	- Added support for driver-specific pre-filters (STR #2108)
	- Added a new side-channel API for drivers and backends
	  for basic device control and information queries (STR
	  #1898)
	- The scheduler now uses poll(), epoll(), or /dev/kqueue
	  instead of select() when possible (STR #1261)
	- Added new cupsArrayGetIndex() and cupsArrayGetInsert()
	  functions to get the current index and insertion
	  positions of an array.
	- Added a new --with-max-copies configure option (STR
	  #2090)
	- Added new cupsRemoveDest() and cupsSetDefaultDest()
	  functions.
	- Added support for cupsPJLCharset attribute in PPD files
	  which specifies the character set that is used in PJL
	  strings (STR #1969)
	- Moved the definition of the (private) _http_s structure
	  to http-private.h; code that directly accesses the
	  http_t members will no longer compile!
	- Added support for setting the document-format-default
	  attribute on a per-printer basis.
	- Added support for IntelliBar label printers.
