aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/transfer.c15
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 ) */