commit: r1624 - neon/branches/0.28.x/src
joe at manyfish.co.uk
joe at manyfish.co.uk
Wed Jan 28 20:14:29 EST 2009
Author: joe
Date: Wed Jan 28 17:14:28 2009
New Revision: 1624
Modified:
neon/branches/0.28.x/src/ne_socket.c
Log:
Merge r1620 from trunk:
* src/ne_socket.c (read_gnutls): Perform a new handshake if required
and indicated by a gnutls_record_recv() failure.
Modified: neon/branches/0.28.x/src/ne_socket.c
==============================================================================
--- neon/branches/0.28.x/src/ne_socket.c (original)
+++ neon/branches/0.28.x/src/ne_socket.c Wed Jan 28 17:14:28 2009
@@ -705,13 +705,18 @@
static ssize_t read_gnutls(ne_socket *sock, char *buffer, size_t len)
{
ssize_t ret;
+ unsigned reneg = 1; /* number of allowed rehandshakes */
ret = readable_gnutls(sock, sock->rdtimeout);
if (ret) return ret;
do {
- ret = gnutls_record_recv(sock->ssl, buffer, len);
- } while (RETRY_GNUTLS(sock, ret));
+ do {
+ ret = gnutls_record_recv(sock->ssl, buffer, len);
+ } while (RETRY_GNUTLS(sock, ret));
+
+ } while (ret == GNUTLS_E_REHANDSHAKE && reneg--
+ && (ret = gnutls_handshake(sock->ssl)) == GNUTLS_E_SUCCESS);
if (ret <= 0)
ret = error_gnutls(sock, ret);
More information about the neon-commits
mailing list