From ebe5339003df6b4247f3637c4df5272a8dd69909 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 7 Dec 2009 20:25:17 +0000 Subject: [PATCH] - Martin Storsjo made libcurl use the Expect: 100-continue header for posts with unknown size. Previously it was only used for posts with a known size larger than 1024 bytes. --- CHANGES | 5 +++++ RELEASE-NOTES | 1 + lib/http.c | 4 ++-- tests/data/test510 | 1 + tests/data/test565 | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 92b737589..bb05cb93f 100644 --- a/CHANGES +++ b/CHANGES @@ -7,6 +7,11 @@ Changelog +Daniel Stenberg (7 Dec 2009) +- Martin Storsjo made libcurl use the Expect: 100-continue header for posts + with unknown size. Previously it was only used for posts with a known size + larger than 1024 bytes. + Daniel Stenberg (1 Dec 2009) - If the Expect: 100-continue header has been set by the application through curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set diff --git a/RELEASE-NOTES b/RELEASE-NOTES index f6b38ce45..d916d438d 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -12,6 +12,7 @@ This release includes the following changes: o support SSL_FILETYPE_ENGINE for client certificate o curl-config can now show the arguments used when building curl o non-blocking TFTP + o send Expect: 100-continue for POSTs with unknown sizes This release includes the following bugfixes: diff --git a/lib/http.c b/lib/http.c index d67a001b2..6ac2d7331 100644 --- a/lib/http.c +++ b/lib/http.c @@ -2815,7 +2815,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) /* figure out the size of the postfields */ postsize = (data->set.postfieldsize != -1)? data->set.postfieldsize: - (data->set.postfields? (curl_off_t)strlen(data->set.postfields):0); + (data->set.postfields? (curl_off_t)strlen(data->set.postfields):-1); } if(!data->req.upload_chunky) { /* We only set Content-Length and allow a custom Content-Length if @@ -2849,7 +2849,7 @@ CURLcode Curl_http(struct connectdata *conn, bool *done) data->state.expect100header = Curl_compareheader(ptr, "Expect:", "100-continue"); } - else if(postsize > TINY_INITIAL_POST_SIZE) { + else if(postsize > TINY_INITIAL_POST_SIZE || postsize < 0) { result = expect100(data, conn, req_buffer); if(result) return result; diff --git a/tests/data/test510 b/tests/data/test510 index 360d6e96e..8313f51c3 100644 --- a/tests/data/test510 +++ b/tests/data/test510 @@ -40,6 +40,7 @@ Host: %HOSTIP:%HTTPPORT Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded +Expect: 100-continue 3 one diff --git a/tests/data/test565 b/tests/data/test565 index 896db4061..838941fef 100644 --- a/tests/data/test565 +++ b/tests/data/test565 @@ -88,6 +88,7 @@ Host: 127.0.0.1:8990 Accept: */* Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded +Expect: 100-continue 3 one