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