commit 61f3f0440ddeaf97bf6ea3e41ffc3b19d8179ce6
parent 51589165368da1e00235d0c58b823ec3598be78b
Author: Matthias Wachs <wachs@in.tum.de>
Date: Tue, 24 Aug 2010 12:26:52 +0000
FIXED: gnutls_record_recv can return GNUTLS_E_AGAIN
In this situation gnutls_record_recv has to be called again
Diffstat:
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/src/daemon/daemon.c b/src/daemon/daemon.c
@@ -349,7 +349,18 @@ static pthread_mutex_t MHD_gnutls_init_mutex;
static ssize_t
recv_tls_adapter (struct MHD_Connection *connection, void *other, size_t i)
{
- return gnutls_record_recv (connection->tls_session, other, i);
+ int res;
+ res = gnutls_record_recv (connection->tls_session, other, i);
+ if (res != GNUTLS_E_AGAIN)
+ return res;
+ else
+ {
+ while (res == GNUTLS_E_AGAIN)
+ {
+ res = gnutls_record_recv (connection->tls_session, other, i);
+ }
+ return res;
+ }
}
/**