From 8c83422fe2edb0b634fbf2ea065c7f638f9fff3b Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 9 Feb 2005 23:09:12 +0000 Subject: David Byron identified the lack of SSL_pending() use, and this is my take at fixing this issue. --- lib/transfer.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/transfer.c b/lib/transfer.c index 9b37988de..5758dad47 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -242,6 +242,19 @@ CURLcode Curl_readrewind(struct connectdata *conn) return CURLE_OK; } +#ifdef USE_SSLEAY +static int data_pending(struct connectdata *conn) +{ + if(conn->ssl[FIRSTSOCKET].handle) + /* SSL is in use */ + return SSL_pending(conn->ssl[FIRSTSOCKET].handle); + + return 0; /* nothing */ +} +#else +/* non-SSL never have pending data */ +#define data_pending(x) 0 +#endif /* * Curl_readwrite() is the low-level function to be called when data is to @@ -1147,7 +1160,7 @@ CURLcode Curl_readwrite(struct connectdata *conn, k->keepon &= ~KEEP_READ; } - } while(0); + } while(data_pending(conn)); } /* if( read from socket ) */ -- cgit v1.2.3