diff options
-rw-r--r-- | lib/transfer.c | 15 |
1 files changed, 14 insertions, 1 deletions
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 ) */ |