]> sjero.net Git - wget/blobdiff - src/gnutls.c
Allow X509 v1 certificates.
[wget] / src / gnutls.c
index 1d6316298a6af8fff815ff5aeaa17f9acebef8d6..50957e5c3e74c87dc9f707f789590502d31dec51 100644 (file)
@@ -67,6 +67,8 @@ ssl_init ()
 
   gnutls_global_init ();
   gnutls_certificate_allocate_credentials (&credentials);
+  gnutls_certificate_set_verify_flags(credentials,
+                                      GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT);
 
   ca_directory = opt.ca_directory ? opt.ca_directory : "/etc/ssl/certs";
 
@@ -141,7 +143,7 @@ wgnutls_read (int fd, char *buf, int bufsize, void *arg)
 
   do
     ret = gnutls_record_recv (ctx->session, buf, bufsize);
-  while (ret == GNUTLS_E_INTERRUPTED);
+  while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN);
 
   if (ret < 0)
     ctx->last_error = ret;
@@ -156,7 +158,7 @@ wgnutls_write (int fd, char *buf, int bufsize, void *arg)
   struct wgnutls_transport_context *ctx = arg;
   do
     ret = gnutls_record_send (ctx->session, buf, bufsize);
-  while (ret == GNUTLS_E_INTERRUPTED);
+  while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN);
   if (ret < 0)
     ctx->last_error = ret;
   return ret;
@@ -205,7 +207,7 @@ wgnutls_peek (int fd, char *buf, int bufsize, void *arg)
           ret = gnutls_record_recv (ctx->session, buf + offset,
                                      bufsize - offset);
         }
-      while (ret == GNUTLS_E_INTERRUPTED);
+      while (ret == GNUTLS_E_INTERRUPTED || ret == GNUTLS_E_AGAIN);
 
       read = ret;