gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnurl] 290/411: http: pass correct header size to debug callback for ch


From: gnunet
Subject: [gnurl] 290/411: http: pass correct header size to debug callback for chunked post
Date: Wed, 13 Jan 2021 01:21:45 +0100

This is an automated email from the git hooks/post-receive script.

nikita pushed a commit to branch master
in repository gnurl.

commit 584ccb5ef2488d589bc7589aef70227a98b080a2
Author: Daniel Stenberg <daniel@haxx.se>
AuthorDate: Fri Oct 30 11:29:22 2020 +0100

    http: pass correct header size to debug callback for chunked post
    
    ... when the chunked framing was added, the size of the "body part" of
    the data was calculated wrongly so the debug callback would get told a
    header chunk a few bytes too big that would also contain the first few
    bytes of the request body.
    
    Reported-by: Dirk Wetter
    Ref: #6144
    Closes #6147
---
 lib/http.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/http.c b/lib/http.c
index a5f42eb97..d775c0b39 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2873,20 +2873,24 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
         }
         else {
           if(postsize) {
+            char chunk[16];
             /* Append the POST data chunky-style */
-            result = Curl_dyn_addf(&req, "%x\r\n", (int)postsize);
+            msnprintf(chunk, sizeof(chunk), "%x\r\n", (int)postsize);
+            result = Curl_dyn_add(&req, chunk);
             if(!result) {
+              included_body = postsize + strlen(chunk);
               result = Curl_dyn_addn(&req, data->set.postfields,
                                      (size_t)postsize);
               if(!result)
                 result = Curl_dyn_add(&req, "\r\n");
-              included_body = postsize + 2;
+              included_body += 2;
             }
           }
-          if(!result)
+          if(!result) {
             result = Curl_dyn_add(&req, "\x30\x0d\x0a\x0d\x0a");
-          /* 0  CR  LF  CR  LF */
-          included_body += 5;
+            /* 0  CR  LF  CR  LF */
+            included_body += 5;
+          }
         }
         if(result)
           return result;

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]