gnutls: Check for the GNUTLS_E_AGAIN return code.

This commit is contained in:
Ray Satiro 2011-04-07 12:25:39 +02:00 committed by Giuseppe Scrivano
parent d18b9749d9
commit 96c3ec36c2
2 changed files with 10 additions and 3 deletions

View 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'.

View 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;