aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2009-12-07 20:25:17 +0000
committerDaniel Stenberg <daniel@haxx.se>2009-12-07 20:25:17 +0000
commitebe5339003df6b4247f3637c4df5272a8dd69909 (patch)
tree3d537cb712a39ab263cb95a9597388a17e4ad36b
parent95362af43c6ab478e21a777c29eb98c8e093a0b2 (diff)
- 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.
-rw-r--r--CHANGES5
-rw-r--r--RELEASE-NOTES1
-rw-r--r--lib/http.c4
-rw-r--r--tests/data/test5101
-rw-r--r--tests/data/test5651
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