]> granicus.if.org Git - curl/commitdiff
mbedtls: implement and provide *_data_pending()
authorDaniel Stenberg <daniel@haxx.se>
Thu, 7 Apr 2016 14:10:10 +0000 (16:10 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 7 Apr 2016 14:10:10 +0000 (16:10 +0200)
... as otherwise we might get stuck thinking there's no more data to
handle.

Reported-by: Damien Vielpeau
Fixes #737

lib/vtls/mbedtls.c
lib/vtls/mbedtls.h

index 77ff326e1eccb70aca0a8f415ae4c5c74abb5a06..4f887a123b2b6fa90f7386996c5817cd5b81704a 100644 (file)
@@ -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 */
index eb6192eea03e75ea3ca0f1d9a96890cfe81afd80..bd1c15bd444cbef6e4de577d952fe0a6b7cb0078 100644 (file)
@@ -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)