Package: cups
Version: 1.4.4-1
Severity: important

Some time within the last few weeks, my CUPS server running on Squeeze stopped 
working with my Lenny CUPS client. The client goes into a loop, chewing up CPU 
and sending loads of HTTP requests to the server. This is a log excerpt from 
the server, using the debug log level:

=== Begin ===
D [16/Jul/2010:11:57:53 +0200] cupsdAcceptClient: 10 from 192.168.1.2:631 (IPv4)
D [16/Jul/2010:11:57:53 +0200] cupsdReadClient: 10 OPTIONS * HTTP/1.1
D [16/Jul/2010:11:57:53 +0200] cupsdSetBusyState: Active clients
D [16/Jul/2010:11:57:53 +0200] cupsdAuthorize: No authentication data provided.
D [16/Jul/2010:11:57:53 +0200] cupsdReadClient: 10 Closing because Keep-Alive 
disabled
D [16/Jul/2010:11:57:53 +0200] cupsdCloseClient: 10
D [16/Jul/2010:11:57:53 +0200] cupsdSetBusyState: Not busy
=== End ===

strace nicely shows the interaction between server and client (with log level 
set to warning to reduce the clutter, no strace filter options used so this is 
all that happens):

=== Begin ===
epoll_wait(0x3, 0x2a069e90, 0x400, 0x3e8) = 1
gettimeofday({1279276190, 820170}, NULL) = 0
accept(4, {sa_family=AF_INET, sin_port=htons(60976), 
sin_addr=inet_addr("192.168.1.2")}, [16]) = 9
getsockname(9, {sa_family=AF_INET, sin_port=htons(631), 
sin_addr=inet_addr("192.168.1.252")}, [16]) = 0
setsockopt(9, SOL_TCP, TCP_NODELAY, [1], 4) = 0
fcntl64(9, F_GETFD)                     = 0
fcntl64(9, F_SETFD, FD_CLOEXEC)         = 0
epoll_ctl(0x3, 0x1, 0x9, 0xbede6868)    = 0
gettimeofday({1279276190, 821426}, NULL) = 0
epoll_wait(0x3, 0x2a069e90, 0x400, 0x3e8) = 1
poll([{fd=9, events=POLLIN}], 1, 10000) = 1 ([{fd=9, revents=POLLIN}])
recv(9, "OPTIONS * HTTP/1.1\r\nConnection: Upgrade\r\nHost: flatty\r\nUpgrade: 
TLS/1.0,SSL/2.0,SSL/3.0\r\nUser-Agent: CUPS/1.3.8\r\n\r\n", 2048, 0) = 115
gettimeofday({1279276190, 822257}, NULL) = 0
gettimeofday({1279276190, 822420}, NULL) = 0
gettimeofday({1279276190, 822595}, NULL) = 0
gettimeofday({1279276190, 822750}, NULL) = 0
gettimeofday({1279276190, 822906}, NULL) = 0
gettimeofday({1279276190, 823062}, NULL) = 0
gettimeofday({1279276190, 823217}, NULL) = 0
gettimeofday({1279276190, 823372}, NULL) = 0
gettimeofday({1279276190, 823585}, NULL) = 0
gettimeofday({1279276190, 823736}, NULL) = 0
gettimeofday({1279276190, 823908}, NULL) = 0
gettimeofday({1279276190, 824064}, NULL) = 0
gettimeofday({1279276190, 824219}, NULL) = 0
gettimeofday({1279276190, 824373}, NULL) = 0
gettimeofday({1279276190, 824545}, NULL) = 0
gettimeofday({1279276190, 824703}, NULL) = 0
gettimeofday({1279276190, 824857}, NULL) = 0
gettimeofday({1279276190, 825013}, NULL) = 0
send(9, "HTTP/1.1 501 Not Implemented\r\nDate: Fri, 16 Jul 2010 10:29:50 
GMT\r\nServer: CUPS/1.4\r\nContent-Language: en\r\nConnection: 
close\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 
348\r\n\r\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" 
\"http://www.w3.org/TR/html4/loose.dtd\";>\n<HTML>\n<HEAD>\n\t<META 
HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=utf-8\">\n\t<TITLE>501 
Not Implemented</TITLE>\n\t<LINK REL=\"STYLESHEET\" TYPE=\"text/css\" 
HREF=\"/cups.css\">\n</HEAD>\n<BODY>\n<H1>501 Not 
Implemented</H1>\n<P></P>\n</BODY>\n</HTML>\n", 537, 0) = 537
gettimeofday({1279276190, 826262}, NULL) = 0
gettimeofday({1279276190, 826469}, NULL) = 0
gettimeofday({1279276190, 826686}, NULL) = 0
gettimeofday({1279276190, 826844}, NULL) = 0
gettimeofday({1279276190, 827000}, NULL) = 0
gettimeofday({1279276190, 827155}, NULL) = 0
gettimeofday({1279276190, 827308}, NULL) = 0
gettimeofday({1279276190, 827461}, NULL) = 0
send(9, "HTTP/1.1 200 OK\r\nDate: Fri, 16 Jul 2010 10:29:50 GMT\r\nServer: 
CUPS/1.4\r\nContent-Language: en\r\nAllow: GET, HEAD, OPTIONS, POST, 
PUT\r\nContent-Length: 0\r\n\r\n", 153, 0) = 153
epoll_ctl(0x3, 0x2, 0x9, 0xbeddd3a8)    = 0
close(9)                                = 0
gettimeofday({1279276190, 828467}, NULL) = 0
epoll_wait(0x3, 0x2a069e90, 0x400, 0x3e8) = 0
=== End ===

Without checking the RFC, sending 501 + Connection: close and 200 in direct 
succession looks terribly broken.
Given the content of the 200 response, it looks like the 501 shouldn't have 
been sent.


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: armel (armv5tel)

Kernel: Linux 2.6.34-rc7-flatty-ocf-2-00126-g835446b
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages cups depends on:
ii  adduser                 3.112            add and remove users and groups
ii  bc                      1.06.95-2        The GNU bc arbitrary precision cal
ii  cups-client             1.4.4-1          Common UNIX Printing System(tm) - 
ii  cups-common             1.4.4-1          Common UNIX Printing System(tm) - 
ii  debconf [debconf-2.0]   1.5.32           Debian configuration management sy
ii  ghostscript             8.71~dfsg2-3     The GPL Ghostscript PostScript/PDF
ii  libavahi-client3        0.6.25-4         Avahi client library
ii  libavahi-common3        0.6.25-4         Avahi common library
ii  libc6                   2.11.2-2         Embedded GNU C Library: Shared lib
ii  libcups2                1.4.4-1          Common UNIX Printing System(tm) - 
ii  libcupscgi1             1.4.4-1          Common UNIX Printing System(tm) - 
ii  libcupsdriver1          1.4.4-1          Common UNIX Printing System(tm) - 
ii  libcupsimage2           1.4.4-1          Common UNIX Printing System(tm) - 
ii  libcupsmime1            1.4.4-1          Common UNIX Printing System(tm) - 
ii  libcupsppdc1            1.4.4-1          Common UNIX Printing System(tm) - 
ii  libdbus-1-3             1.2.24-1         simple interprocess messaging syst
ii  libgcc1                 1:4.4.4-6        GCC support library
ii  libgssapi-krb5-2        1.8.1+dfsg-5     MIT Kerberos runtime libraries - k
ii  libijs-0.35             0.35-7           IJS raster image transport protoco
ii  libkrb5-3               1.8.1+dfsg-5     MIT Kerberos runtime libraries
ii  libldap-2.4-2           2.4.17-2.1       OpenLDAP libraries
ii  libpam0g                1.1.1-3          Pluggable Authentication Modules l
ii  libpaper1               1.1.24           library for handling paper charact
ii  libpoppler5             0.12.4-1         PDF rendering library
ii  libslp1                 1.2.1-7.7        OpenSLP libraries
ii  libstdc++6              4.4.4-6          The GNU Standard C++ Library v3
ii  libusb-0.1-4            2:0.1.12-15      userspace USB programming library
ii  lsb-base                3.2-23.1         Linux Standard Base 3.2 init scrip
ii  perl-modules            5.10.1-13        Core Perl modules
ii  poppler-utils           0.12.4-1         PDF utilitites (based on libpopple
ii  procps                  1:3.2.8-9        /proc file system utilities
ii  ssl-cert                1.0.25           simple debconf wrapper for OpenSSL
ii  ttf-freefont            20090104-7       Freefont Serif, Sans and Mono True
ii  zlib1g                  1:1.2.3.4.dfsg-3 compression library - runtime

Versions of packages cups recommends:
ii  cups-driver-gutenprint    5.2.5-1        printer drivers for CUPS
ii  foomatic-filters          4.0-20090509-1 OpenPrinting printer support - fil
ii  ghostscript-cups          8.71~dfsg2-3   The GPL Ghostscript PostScript/PDF

Versions of packages cups suggests:
ii  cups-bsd                      1.4.4-1    Common UNIX Printing System(tm) - 
pn  cups-pdf                      <none>     (no description available)
pn  cups-ppdc                     <none>     (no description available)
ii  foomatic-db                   20090616-1 OpenPrinting printer support - dat
ii  foomatic-db-engine            4.0.4-1    OpenPrinting printer support - pro
pn  hplip                         <none>     (no description available)
pn  smbclient                     <none>     (no description available)
ii  udev                          158-1      /dev/ and hotplug management daemo
pn  xpdf-korean | xpdf-japanese | <none>     (no description available)

-- Configuration Files:
/etc/cups/cupsd.conf changed:
LogLevel debug
MaxLogSize 0
SystemGroup lpadmin
Listen 192.168.1.252:631
Listen /var/run/cups/cups.sock
ServerName flatty.sascha.silbe.org
ServerAlias *
Browsing On
BrowseOrder allow,deny
BrowseAllow from None
BrowseDeny from All
BrowseAddress 192.168.1.255:631
BrowseInterval 30
BrowseTimeout 70
BrowseLocalOptions encryption=required
BrowseLocalProtocols CUPS dnssd
DefaultAuthType Basic
<Location />
  Order allow,deny
  Allow 192.168.1.0/24
</Location>
<Location /admin>
  Order allow,deny
  Allow 192.168.1.0/24
</Location>
<Location /admin/conf>
  Order allow,deny
  Allow 192.168.1.0/24
</Location>
<Policy default>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs 
Set-Job-Attributes Create-Job-Subscription Renew-Subscription 
Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job 
Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
    Order deny,allow
    Allow 192.168.1.0/24
  </Limit>
  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class 
CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
    Order deny,allow
    Allow 192.168.1.0/24
  </Limit>
  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer 
Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs 
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer 
Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs 
CUPS-Reject-Jobs>
    Order deny,allow
    Allow 192.168.1.0/24
  </Limit>
  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Order deny,allow
    Allow 192.168.1.0/24
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
<Policy authenticated>
  # Job-related operations must be done by the owner or an administrator...
  <Limit Create-Job Print-Job Print-URI>
    AuthType Default
    Order deny,allow
  </Limit>
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs 
Set-Job-Attributes Create-Job-Subscription Renew-Subscription 
Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job 
Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  # All administration operations require an administrator to authenticate...
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class 
CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  # All printer operations require a printer operator to authenticate...
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer 
Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs 
Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer 
Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs 
CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  # Only the owner or an administrator can cancel or authenticate a job...
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>


-- debconf information:
  cupsys/raw-print: true
  cupsys/backend: ipp, lpd, parallel, scsi, serial, socket, usb, snmp, dnssd



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to