aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2007-12-13 10:00:06 +0000
committerDaniel Stenberg <daniel@haxx.se>2007-12-13 10:00:06 +0000
commit7b1a22147e97e06316ca8707d6177fa9187d7550 (patch)
tree740ddd65cbb93641232e2127a07e4f4fd0994da9
parentdc24540ed1abaed66ff93ffcd5f603bd870926f1 (diff)
David Wright filed bug report #1849764
(http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He identified a problem for re-used connections that previously had sent Expect: 100-continue and in some situations the subsequent POST (that didn't use Expect:) still had the internal flag set for its use. David's fix (that makes the setting of the flag in every single request unconditionally) is fine and is now used!
-rw-r--r--CHANGES9
-rw-r--r--RELEASE-NOTES3
-rw-r--r--lib/http.c22
3 files changed, 23 insertions, 11 deletions
diff --git a/CHANGES b/CHANGES
index 6ce94b139..7921bcb5c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,15 @@
Changelog
+Daniel S (13 Dec 2007)
+- David Wright filed bug report #1849764
+ (http://curl.haxx.se/bug/view.cgi?id=1849764) with an included fix. He
+ identified a problem for re-used connections that previously had sent
+ Expect: 100-continue and in some situations the subsequent POST (that didn't
+ use Expect:) still had the internal flag set for its use. David's fix (that
+ makes the setting of the flag in every single request unconditionally) is
+ fine and is now used!
+
Daniel S (12 Dec 2007)
- Gilles Blanc made the curl tool enable SO_KEEPALIVE for the connections and
added the --no-keep-alive option that can disable that on demand.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index a1f1d7a38..6714b8dcd 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -35,6 +35,7 @@ This release includes the following bugfixes:
o no longer default-appends ;type= on FTP URLs thru proxies
o SSL session id caching
o POST with callback over proxy requiring NTLM or Digest
+ o Expect: 100-continue flaw on re-used connection with POSTs
This release includes the following known bugs:
@@ -55,6 +56,6 @@ advice from friends like these:
Dan Fandrich, Gisle Vanem, Toby Peterson, Yang Tse, Daniel Black,
Robin Johnson, Michal Marek, Ates Goral, Andres Garcia, Rob Crittenden,
Emil Romanus, Alessandro Vesely, Ray Pekowski, Spacen Jasset, Andrew Moise,
- Gilles Blanc
+ Gilles Blanc, David Wright
Thanks! (and sorry if I forgot to mention someone)
diff --git a/lib/http.c b/lib/http.c
index 7f3ff35a3..e41a8f750 100644
--- a/lib/http.c
+++ b/lib/http.c
@@ -2613,17 +2613,19 @@ CURLcode Curl_http(struct connectdata *conn, bool *done)
return result;
}
- if(data->set.postfields) {
+ /* For really small posts we don't use Expect: headers at all, and for
+ the somewhat bigger ones we allow the app to disable it. Just make
+ sure that the expect100header is always set to the preferred value
+ here. */
+ if(postsize > TINY_INITIAL_POST_SIZE) {
+ result = expect100(data, req_buffer);
+ if(result)
+ return result;
+ }
+ else
+ data->state.expect100header = FALSE;
- /* for really small posts we don't use Expect: headers at all, and for
- the somewhat bigger ones we allow the app to disable it */
- if(postsize > TINY_INITIAL_POST_SIZE) {
- result = expect100(data, req_buffer);
- if(result)
- return result;
- }
- else
- data->state.expect100header = FALSE;
+ if(data->set.postfields) {
if(!data->state.expect100header &&
(postsize < MAX_INITIAL_POST_SIZE)) {