aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2016-04-07 16:10:10 +0200
committerDaniel Stenberg <daniel@haxx.se>2016-04-07 16:10:10 +0200
commitc111178bd4ed09d462c83c22b4bd99b20c9f6062 (patch)
treee089435225769cf33333d3a10608ee881855fe3f /lib
parentef802c9b853f3556165d4323877890c5f1cf9d38 (diff)
mbedtls: implement and provide *_data_pending()
... as otherwise we might get stuck thinking there's no more data to handle. Reported-by: Damien Vielpeau Fixes #737
Diffstat (limited to 'lib')
-rw-r--r--lib/vtls/mbedtls.c7
-rw-r--r--lib/vtls/mbedtls.h3
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c
index 77ff326e1..4f887a123 100644
--- a/lib/vtls/mbedtls.c
+++ b/lib/vtls/mbedtls.c
@@ -864,6 +864,11 @@ void Curl_mbedtls_cleanup(void)
(void)Curl_polarsslthreadlock_thread_cleanup();
}
-
+int Curl_mbedtls_data_pending(const struct connectdata *conn, int sockindex)
+{
+ mbedtls_ssl_context *ssl =
+ (mbedtls_ssl_context *)&conn->ssl[sockindex].ssl;
+ return ssl->in_msglen != 0;
+}
#endif /* USE_MBEDTLS */
diff --git a/lib/vtls/mbedtls.h b/lib/vtls/mbedtls.h
index eb6192eea..bd1c15bd4 100644
--- a/lib/vtls/mbedtls.h
+++ b/lib/vtls/mbedtls.h
@@ -31,6 +31,7 @@
/* Called on first use mbedTLS, setup threading if supported */
int Curl_mbedtls_init(void);
void Curl_mbedtls_cleanup(void);
+int Curl_mbedtls_data_pending(const struct connectdata *conn, int sockindex);
CURLcode Curl_mbedtls_connect(struct connectdata *conn, int sockindex);
@@ -63,7 +64,7 @@ int Curl_mbedtls_shutdown(struct connectdata *conn, int sockindex);
#define curlssl_engines_list(x) (x=x, (struct curl_slist *)NULL)
#define curlssl_version Curl_mbedtls_version
#define curlssl_check_cxn(x) (x=x, -1)
-#define curlssl_data_pending(x,y) (x=x, y=y, 0)
+#define curlssl_data_pending(x,y) Curl_mbedtls_data_pending(x, y)
#define CURL_SSL_BACKEND CURLSSLBACKEND_MBEDTLS
#define curlssl_sha256sum(a,b,c,d) mbedtls_sha256(a,b,c,0)