]> sjero.net Git - wget/commitdiff
gnutls: Check for the GNUTLS_E_AGAIN return code.
authorRay Satiro <raysatiro@yahoo.com>
Thu, 7 Apr 2011 10:25:39 +0000 (12:25 +0200)
committerGiuseppe Scrivano <gscrivano@gnu.org>
Thu, 7 Apr 2011 10:25:39 +0000 (12:25 +0200)
src/ChangeLog
src/gnutls.c

index fb42a5441d5c8916bab94da9411f17aba95de31b..a973ddd394d4eb48cab5ca2bd36f4d822442b1e4 100644 (file)
@@ -1,3 +1,10 @@
+2011-04-07  Ray Satiro  <raysatiro@yahoo.com> (tiny change)
+
+       (wgnutls_read): Check for the GNUTLS_E_AGAIN return code in the recv
+       tight loop.
+       (wgnutls_write): Likewise.
+       (wgnutls_peek): Likewise.
+
 2011-04-07  Giuseppe Scrivano  <gscrivano@gnu.org>
 
        * gnutls.c (wgnutls_peek): New local variable `read'.
index 1d6316298a6af8fff815ff5aeaa17f9acebef8d6..34a619ca610dc396c9f048a95989fa6f26955847 100644 (file)
@@ -141,7 +141,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 +156,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 +205,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;