[Pkg-cups-devel] Bug#589279: stopped working with lenny client (cups-client 1.3.8-1+lenny8)
Sascha Silbe
sascha-debian-bugs-cups-2010-07-16 at silbe.org
Fri Jul 16 10:41:04 UTC 2010
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
More information about the Pkg-cups-devel
mailing list