aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-08-06 10:57:44 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-08-06 11:00:17 +0200
commitf91d5786740ea1f84deede06466d34d23cb0677f (patch)
tree2c7f3c799c4a08ae87f3091f14c61125ae8170f9
parent9df82573016eb964a81c656f22263ff9f960974e (diff)
multi_socket: set timeout for 100-continue
When libcurl internally decided to wait for a 100-continue header, there was no call to the timeout function so there was no timeout callback called when the multi_socket API was used and thus applications became either completely wrong or at least ineffecient depending on how they handled the situation. We now set a timeout to get triggered. Reported by: Ben Darnell Bug: http://curl.haxx.se/bug/view.cgi?id=3039744
-rw-r--r--lib/transfer.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/transfer.c b/lib/transfer.c
index 41bf2fe11..99a62610b 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -811,6 +811,9 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
k->keepon &= ~KEEP_SEND; /* disable writing */
k->start100 = Curl_tvnow(); /* timeout count starts now */
*didwhat &= ~KEEP_SEND; /* we didn't write anything actually */
+
+ /* set a timeout for the multi interface */
+ Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
break;
}
@@ -2265,6 +2268,9 @@ Curl_setup_transfer(
/* wait with write until we either got 100-continue or a timeout */
k->exp100 = EXP100_AWAITING_CONTINUE;
k->start100 = k->start;
+
+ /* set a timeout for the multi interface */
+ Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
}
else {
if(data->state.expect100header)