From: Ray Satiro Date: Thu, 7 Apr 2011 10:25:39 +0000 (+0200) Subject: gnutls: Check for the GNUTLS_E_AGAIN return code. X-Git-Tag: v1.13~50 X-Git-Url: http://sjero.net/git/?p=wget;a=commitdiff_plain;h=96c3ec36c2e40682941a4ed41705405cbf07dba2 gnutls: Check for the GNUTLS_E_AGAIN return code. --- diff --git a/src/ChangeLog b/src/ChangeLog index fb42a544..a973ddd3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2011-04-07 Ray Satiro (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 * gnutls.c (wgnutls_peek): New local variable `read'. diff --git a/src/gnutls.c b/src/gnutls.c index 1d631629..34a619ca 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -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;