]> sjero.net Git - wget/commitdiff
Fix a linker error on systems with an older gnutls version.
authorGiuseppe Scrivano <gscrivano@gnu.org>
Wed, 10 Aug 2011 19:35:59 +0000 (21:35 +0200)
committerGiuseppe Scrivano <gscrivano@gnu.org>
Wed, 10 Aug 2011 19:35:59 +0000 (21:35 +0200)
ChangeLog
configure.ac
src/ChangeLog
src/gnutls.c

index 22ad5d4079cb69f2f2fca486692aeb4666be68e5..e6fe47b63cf8fe9c0b03ee494afdda55363dc88f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-08-10  Giuseppe Scrivano  <gscrivano@gnu.org>
+
+       * configure.ac: Check for `gnutls_priority_set_direct' when gnutls is
+       used.
+       Reported by: Karl Berry<karl@freefriends.org>
+
 2011-08-09  Giuseppe Scrivano  <gscrivano@southpole.se>
 
        * build-aux/bzr-version-gen: Fix some portability issues.
index bfdafce5c0ef019e45ebe5e29e6fd41033aab2d0..9b139d0c73c2469150e0d396b9d5b9e1518eb1d7 100644 (file)
@@ -298,6 +298,8 @@ AS_IF([test x"$with_ssl" = xopenssl], [
     else
       AC_MSG_ERROR([--with-ssl was given, but GNUTLS is not available.])
     fi
+
+    AC_CHECK_FUNCS(gnutls_priority_set_direct)
   ]) # endif: --with-ssl == no?
 ]) # endif: --with-ssl == openssl?
 
index d7934d72256970b2e87716d40181995e3b3f0879..8f1d04c67fd5bb93c7630074c17bbc5bca98620b 100644 (file)
@@ -1,3 +1,11 @@
+2011-08-10  Giuseppe Scrivano  <gscrivano@gnu.org>
+
+       Fix a linker error on systems with an older gnutls version.
+       * gnutls.c (ssl_connect_wget)
+       [HAVE_GNUTLS_PRIORITY_SET_DIRECT]:  Use gnutls_priority_set_direct.
+       [! HAVE_GNUTLS_PRIORITY_SET_DIRECT]:  Use gnutls_protocol_set_priority.
+       Reported by: Karl Berry<karl@freefriends.org>
+
 2011-08-06  Jochen Roderburg <Roderburg@Uni-Koeln.DE>
 
        * host.c (lookup_host): Ensure it doesn't print more IPs than available
index 34d27ec34e43635ea85f5f8862c2a4136d366c04..78f83385a2608d2f3a2a7312d07b3517337781f9 100644 (file)
@@ -191,7 +191,7 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
       else
         read = gnutls_record_recv (ctx->session, buf + offset,
                                    bufsize - offset);
-        
+
       if (read < 0)
         {
           if (offset)
@@ -256,6 +256,7 @@ ssl_connect_wget (int fd)
   gnutls_transport_set_ptr (session, (gnutls_transport_ptr) FD_TO_SOCKET (fd));
 
   err = 0;
+#if HAVE_GNUTLS_PRIORITY_SET_DIRECT
   switch (opt.secure_protocol)
     {
     case secure_protocol_auto:
@@ -270,6 +271,30 @@ ssl_connect_wget (int fd)
     default:
       abort ();
     }
+#else
+  int allowed_protocols[4] = {0, 0, 0, 0};
+  switch (opt.secure_protocol)
+    {
+    case secure_protocol_auto:
+      break;
+    case secure_protocol_sslv2:
+    case secure_protocol_sslv3:
+      allowed_protocols[0] = GNUTLS_SSL3;
+      err = gnutls_protocol_set_priority (session, allowed_protocols);
+      break;
+
+    case secure_protocol_tlsv1:
+      allowed_protocols[0] = GNUTLS_TLS1_0;
+      allowed_protocols[1] = GNUTLS_TLS1_1;
+      allowed_protocols[2] = GNUTLS_TLS1_2;
+      err = gnutls_protocol_set_priority (session, allowed_protocols);
+      break;
+
+    default:
+      abort ();
+    }
+#endif
+
   if (err < 0)
     {
       logprintf (LOG_NOTQUIET, "GnuTLS: %s\n", gnutls_strerror (err));