From 96c3ec36c2e40682941a4ed41705405cbf07dba2 Mon Sep 17 00:00:00 2001 From: Ray Satiro Date: Thu, 7 Apr 2011 12:25:39 +0200 Subject: [PATCH] gnutls: Check for the GNUTLS_E_AGAIN return code. --- src/ChangeLog | 7 +++++++ src/gnutls.c | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) 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; -- 2.39.2