receive_and_send_encrypted_post_data(): Loop until no data is left
authorFabian Keil <fk@fabiankeil.de>
Mon, 25 May 2020 10:01:57 +0000 (12:01 +0200)
committerFabian Keil <fk@fabiankeil.de>
Mon, 25 May 2020 11:34:30 +0000 (13:34 +0200)
... if the content length is known.

Previously data that wasn't received yet was ignored
which could result in incomplete uploads.

Sponsored by: Robert Klemme

jcc.c

diff --git a/jcc.c b/jcc.c
index 4354fd2..85c4182 100644 (file)
--- a/jcc.c
+++ b/jcc.c
@@ -2053,7 +2053,8 @@ static jb_err receive_and_send_encrypted_post_data(struct client_state *csp)
 {
    int content_length_known = csp->expected_client_content_length != 0;
 
 {
    int content_length_known = csp->expected_client_content_length != 0;
 
-   while (is_ssl_pending(&(csp->mbedtls_client_attr.ssl)))
+   while (is_ssl_pending(&(csp->mbedtls_client_attr.ssl))
+      || (content_length_known && csp->expected_client_content_length != 0))
    {
       unsigned char buf[BUFFER_SIZE];
       int len;
    {
       unsigned char buf[BUFFER_SIZE];
       int len;