- Improve cups-gnutls-gcrypt-threads.patch (#564841, STR #3461).

This commit is contained in:
Jiří Popelka 2010-02-15 11:40:21 +00:00
parent 2af5db74bc
commit 547aaab471
2 changed files with 33 additions and 14 deletions

View File

@ -1,17 +1,32 @@
diff -up cups-1.4.2/config-scripts/cups-ssl.m4.gnutls-gcrypt-threads cups-1.4.2/config-scripts/cups-ssl.m4
--- cups-1.4.2/config-scripts/cups-ssl.m4.gnutls-gcrypt-threads 2010-02-15 12:21:32.000000000 +0100
+++ cups-1.4.2/config-scripts/cups-ssl.m4 2010-02-15 12:24:57.000000000 +0100
@@ -61,7 +61,7 @@ if test x$enable_ssl != xno; then
if test "x${SSLLIBS}" = "x" -a "x${enable_gnutls}" != "xno" -a "x$PKGCONFIG" != x; then
AC_PATH_PROG(LIBGNUTLSCONFIG,libgnutls-config)
if $PKGCONFIG --exists gnutls; then
- SSLLIBS=`$PKGCONFIG --libs gnutls`
+ SSLLIBS="`$PKGCONFIG --libs gnutls` -lgcrypt"
SSLFLAGS=`$PKGCONFIG --cflags gnutls`
AC_DEFINE(HAVE_SSL)
AC_DEFINE(HAVE_GNUTLS)
diff -up cups-1.4.2/cups/http.c.gnutls-gcrypt-threads cups-1.4.2/cups/http.c diff -up cups-1.4.2/cups/http.c.gnutls-gcrypt-threads cups-1.4.2/cups/http.c
--- cups-1.4.2/cups/http.c.gnutls-gcrypt-threads 2009-12-21 16:50:58.931552118 +0000 --- cups-1.4.2/cups/http.c.gnutls-gcrypt-threads 2010-02-15 12:21:32.000000000 +0100
+++ cups-1.4.2/cups/http.c 2009-12-21 16:51:15.047552357 +0000 +++ cups-1.4.2/cups/http.c 2010-02-15 12:25:57.000000000 +0100
@@ -1161,6 +1161,9 @@ httpHead(http_t *http, /* I - Conne @@ -1161,6 +1161,12 @@ httpHead(http_t *http, /* I - Conne
return (http_send(http, HTTP_HEAD, uri)); return (http_send(http, HTTP_HEAD, uri));
} }
+#ifdef HAVE_GNUTLS +#ifdef HAVE_GNUTLS
+/* We always have to initialize threading in gcrypt here in libcups
+ * even if cupsd is configured without threading, because an
+ * application using libcups may be using threads itself. */
+GCRY_THREAD_OPTION_PTHREAD_IMPL; +GCRY_THREAD_OPTION_PTHREAD_IMPL;
+#endif +#endif
/* /*
* 'httpInitialize()' - Initialize the HTTP interface library and set the * 'httpInitialize()' - Initialize the HTTP interface library and set the
@@ -1205,6 +1208,7 @@ httpInitialize(void) @@ -1205,6 +1211,7 @@ httpInitialize(void)
#endif /* WIN32 */ #endif /* WIN32 */
#ifdef HAVE_GNUTLS #ifdef HAVE_GNUTLS
@ -20,8 +35,8 @@ diff -up cups-1.4.2/cups/http.c.gnutls-gcrypt-threads cups-1.4.2/cups/http.c
#endif /* HAVE_GNUTLS */ #endif /* HAVE_GNUTLS */
diff -up cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads cups-1.4.2/cups/http-private.h diff -up cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads cups-1.4.2/cups/http-private.h
--- cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads 2009-04-07 16:48:14.000000000 +0100 --- cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads 2009-04-07 17:48:14.000000000 +0200
+++ cups-1.4.2/cups/http-private.h 2009-12-21 16:51:15.049552624 +0000 +++ cups-1.4.2/cups/http-private.h 2010-02-15 12:26:30.000000000 +0100
@@ -98,6 +98,8 @@ extern BIO_METHOD *_httpBIOMethods(void) @@ -98,6 +98,8 @@ extern BIO_METHOD *_httpBIOMethods(void)
* The GNU TLS library is more of a "bare metal" SSL/TLS library... * The GNU TLS library is more of a "bare metal" SSL/TLS library...
*/ */
@ -32,25 +47,26 @@ diff -up cups-1.4.2/cups/http-private.h.gnutls-gcrypt-threads cups-1.4.2/cups/ht
typedef struct typedef struct
{ {
diff -up cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads cups-1.4.2/scheduler/server.c diff -up cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads cups-1.4.2/scheduler/server.c
--- cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads 2008-09-10 23:05:29.000000000 +0100 --- cups-1.4.2/scheduler/server.c.gnutls-gcrypt-threads 2008-09-11 00:05:29.000000000 +0200
+++ cups-1.4.2/scheduler/server.c 2009-12-21 16:51:15.048553044 +0000 +++ cups-1.4.2/scheduler/server.c 2010-02-15 12:24:13.000000000 +0100
@@ -35,7 +35,9 @@ @@ -35,6 +35,9 @@
*/ */
static int started = 0; static int started = 0;
- +#if !defined(HAVE_LIBSSL) && defined(HAVE_GNUTLS) && defined(HAVE_PTHREAD_H)
+#if !defined(HAVE_LIBSSL) && defined(HAVE_GNUTLS)
+GCRY_THREAD_OPTION_PTHREAD_IMPL; +GCRY_THREAD_OPTION_PTHREAD_IMPL;
+#endif +#endif
/* /*
* 'cupsdStartServer()' - Start the server. @@ -75,7 +78,9 @@ cupsdStartServer(void)
@@ -75,7 +77,7 @@ cupsdStartServer(void)
/* /*
* Initialize the encryption libraries... * Initialize the encryption libraries...
*/ */
- -
+#ifdef HAVE_PTHREAD_H
+ gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); + gcry_control (GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread);
+#endif /* HAVE_PTHREAD_H */
gnutls_global_init(); gnutls_global_init();
#endif /* HAVE_LIBSSL */ #endif /* HAVE_LIBSSL */

View File

@ -8,7 +8,7 @@
Summary: Common Unix Printing System Summary: Common Unix Printing System
Name: cups Name: cups
Version: 1.4.2 Version: 1.4.2
Release: 28%{?dist} Release: 29%{?dist}
License: GPLv2 License: GPLv2
Group: System Environment/Daemons Group: System Environment/Daemons
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2 Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
@ -552,6 +552,9 @@ rm -rf $RPM_BUILD_ROOT
%{php_extdir}/phpcups.so %{php_extdir}/phpcups.so
%changelog %changelog
* Mon Feb 15 2010 Jiri Popelka <jpopelka@redhat.com> 1:1.4.2-29
- Improve cups-gnutls-gcrypt-threads.patch (#564841, STR #3461).
* Thu Feb 4 2010 Tim Waugh <twaugh@redhat.com> - 1:1.4.2-28 * Thu Feb 4 2010 Tim Waugh <twaugh@redhat.com> - 1:1.4.2-28
- Rebuild for postscriptdriver tags. - Rebuild for postscriptdriver tags.