[Pkg-cups-devel] Bug#506702: NMU
Bastian Blank
waldi at debian.org
Tue Jan 13 16:01:22 UTC 2009
Hi folks
I intend to NMU cups for this problem now. It makes it impossible to add
or change printers using a Gecko-based browser.
Diff attached.
Bastian
--
Worlds are conquered, galaxies destroyed -- but a woman is always a woman.
-- Kirk, "The Conscience of the King", stardate 2818.9
-------------- next part --------------
diff -u cups-1.3.9/debian/changelog cups-1.3.9/debian/changelog
--- cups-1.3.9/debian/changelog
+++ cups-1.3.9/debian/changelog
@@ -1,3 +1,11 @@
+cups (1.3.9-11.1) UNRELEASED; urgency=low
+
+ * Non-maintainer upload.
+ * Apply upstream patch to fix client request loop for large request over
+ SSL. (closes: #506702)
+
+ -- Bastian Blank <waldi at debian.org> Tue, 13 Jan 2009 16:36:16 +0100
+
cups (1.3.9-11) experimental; urgency=low
* debian/local/filters/cpdftocps: Fixed the fix for the number of copies.
diff -u cups-1.3.9/debian/patches/00list cups-1.3.9/debian/patches/00list
--- cups-1.3.9/debian/patches/00list
+++ cups-1.3.9/debian/patches/00list
@@ -10,6 +10,7 @@
hpgl-regression.dpatch
runloop-backchannel-eof-spin.dpatch
png-image-int-overflow.dpatch
+client-ssl-hang.patch
# patches sent upstream
removecvstag.dpatch
only in patch2:
unchanged:
--- cups-1.3.9.orig/debian/patches/client-ssl-hang.patch
+++ cups-1.3.9/debian/patches/client-ssl-hang.patch
@@ -0,0 +1,92 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+##
+## DP: Fix client loop for SSL connections.
+
+Index: scheduler/client.c
+===================================================================
+--- scheduler/client.c (revision 7820)
++++ scheduler/client.c (working copy)
+@@ -28,6 +28,7 @@
+ * cupsdUpdateCGI() - Read status messages from CGI scripts and programs.
+ * cupsdWriteClient() - Write data to a client as needed.
+ * check_if_modified() - Decode an "If-Modified-Since" line.
++ * data_ready() - Check whether data is available from a client.
+ * encrypt_client() - Enable encryption for the client...
+ * get_cdsa_certificate() - Convert a keychain name into the CFArrayRef
+ * required by SSLSetCertificate.
+@@ -83,6 +84,7 @@
+
+ static int check_if_modified(cupsd_client_t *con,
+ struct stat *filestats);
++static int data_ready(cupsd_client_t *con);
+ #ifdef HAVE_SSL
+ static int encrypt_client(cupsd_client_t *con);
+ #endif /* HAVE_SSL */
+@@ -989,8 +991,7 @@
+ */
+
+ while ((status = httpUpdate(HTTP(con))) == HTTP_CONTINUE)
+- if (con->http.used == 0 ||
+- !memchr(con->http.buffer, '\n', con->http.used))
++ if (!data_ready(con))
+ break;
+
+ if (status != HTTP_OK && status != HTTP_CONTINUE)
+@@ -1889,7 +1890,7 @@
+ }
+ }
+ }
+- while (con->http.state == HTTP_PUT_RECV && con->http.used > 0);
++ while (con->http.state == HTTP_PUT_RECV && data_ready(con));
+
+ if (con->http.state == HTTP_WAITING)
+ {
+@@ -2064,7 +2065,7 @@
+ }
+ }
+ }
+- while (con->http.state == HTTP_POST_RECV && con->http.used > 0);
++ while (con->http.state == HTTP_POST_RECV && data_ready(con));
+
+ if (con->http.state == HTTP_POST_SEND)
+ {
+@@ -2914,7 +2915,39 @@
+ }
+
+
++/*
++ * 'data_ready()' - Check whether data is available from a client.
++ */
++
++static int /* O - 1 if data is ready, 0 otherwise */
++data_ready(cupsd_client_t *con) /* I - Client */
++{
++ if (con->http.used > 0)
++ return (1);
+ #ifdef HAVE_SSL
++ else if (con->http.tls)
++ {
++# ifdef HAVE_LIBSSL
++ if (SSL_pending((SSL *)(con->http.tls)))
++ return (1);
++# elif defined(HAVE_GNUTLS)
++ if (gnutls_record_check_pending(((http_tls_t *)(con->http.tls))->session))
++ return (1);
++# elif defined(HAVE_CDSASSL)
++ size_t bytes; /* Bytes that are available */
++
++ if (!SSLGetBufferedReadSize(((http_tls_t *)(con->http.tls))->session,
++ &bytes) && bytes > 0)
++ return (1);
++# endif /* HAVE_LIBSSL */
++ }
++#endif /* HAVE_SSL */
++
++ return (0);
++}
++
++
++#ifdef HAVE_SSL
+ /*
+ * 'encrypt_client()' - Enable encryption for the client...
+ */
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/pkg-cups-devel/attachments/20090113/a4c5e242/attachment.pgp
More information about the Pkg-cups-devel
mailing list