From: Daniel Stenberg Date: Wed, 28 May 2003 07:54:33 +0000 (+0000) Subject: Posting static data using POST and chunked encoded now also appends the X-Git-Tag: curl-7_10_6~158 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4e410111dbc8f953560e3616e084517360c59533;p=curl Posting static data using POST and chunked encoded now also appends the data to the initial request buffer, if the total post data is less than 100K. --- diff --git a/lib/http.c b/lib/http.c index 7be5eb902..408cbafc5 100644 --- a/lib/http.c +++ b/lib/http.c @@ -1169,16 +1169,27 @@ CURLcode Curl_http(struct connectdata *conn) add_buffer(req_buffer, "\r\n", 2); - /* and here we setup the pointers to the actual data */ if(data->set.postfields) { - if(!conn->bits.upload_chunky) { - /* We have a static chunk of data to POST, and we're not sending - it 'chunked', then we can just as well append it to the request - already now to reduce the number if send() calls */ - add_buffer(req_buffer, data->set.postfields, postsize); + if(postsize < (100*1024)) { + /* The post data is less than 100K, then append it to the header. + This limit is no magic limit but only set to prevent really huge + POSTs to get the data duplicated with malloc() and family. */ + + if(!conn->bits.upload_chunky) + /* We're not sending it 'chunked', append it to the request + already now to reduce the number if send() calls */ + add_buffer(req_buffer, data->set.postfields, postsize); + else { + /* Append the POST data chunky-style */ + add_bufferf(req_buffer, "%x\r\n", postsize); + add_buffer(req_buffer, data->set.postfields, postsize); + add_buffer(req_buffer, "\r\n0\r\n", 5); /* end of a chunked + transfer stream */ + } } else { + /* A huge POST coming up, do data separate from the request */ http->postsize = postsize; http->postdata = data->set.postfields;