From f91d5786740ea1f84deede06466d34d23cb0677f Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 6 Aug 2010 10:57:44 +0200 Subject: [PATCH] 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 --- lib/transfer.c | 6 ++++++ 1 file changed, 6 insertions(+) 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)