1
0
mirror of https://github.com/moparisthebest/curl synced 2024-08-13 17:03:50 -04:00

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
This commit is contained in:
Daniel Stenberg 2010-08-06 10:57:44 +02:00
parent 9df8257301
commit f91d578674

View File

@ -811,6 +811,9 @@ static CURLcode readwrite_upload(struct SessionHandle *data,
k->keepon &= ~KEEP_SEND; /* disable writing */ k->keepon &= ~KEEP_SEND; /* disable writing */
k->start100 = Curl_tvnow(); /* timeout count starts now */ k->start100 = Curl_tvnow(); /* timeout count starts now */
*didwhat &= ~KEEP_SEND; /* we didn't write anything actually */ *didwhat &= ~KEEP_SEND; /* we didn't write anything actually */
/* set a timeout for the multi interface */
Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
break; break;
} }
@ -2265,6 +2268,9 @@ Curl_setup_transfer(
/* wait with write until we either got 100-continue or a timeout */ /* wait with write until we either got 100-continue or a timeout */
k->exp100 = EXP100_AWAITING_CONTINUE; k->exp100 = EXP100_AWAITING_CONTINUE;
k->start100 = k->start; k->start100 = k->start;
/* set a timeout for the multi interface */
Curl_expire(data, CURL_TIMEOUT_EXPECT_100);
} }
else { else {
if(data->state.expect100header) if(data->state.expect100header)