]> granicus.if.org Git - curl/commitdiff
100-continue: fix timeout condition
authorRemi Gacogne <rgacogne@nuagelabs.fr>
Thu, 6 Feb 2014 22:16:37 +0000 (23:16 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 6 Feb 2014 22:21:42 +0000 (23:21 +0100)
When using the multi socket interface, libcurl calls the
curl_multi_timer_callback asking to be woken up after
CURL_TIMEOUT_EXPECT_100 milliseconds.

After the timeout has expired, calling curl_multi_socket_action with
CURL_SOCKET_TIMEOUT as sockfd leads libcurl to check expired
timeouts. When handling the 100-continue one, the following check in
Curl_readwrite() fails if exactly CURL_TIMEOUT_EXPECT_100 milliseconds
passed since the timeout has been set!

It seems logical to consider that having waited for exactly
CURL_TIMEOUT_EXPECT_100 ms is enough.

Bug: http://curl.haxx.se/bug/view.cgi?id=1334

lib/transfer.c

index 3408a84146f72577fa3298a59ca23022616020d3..f996b0ee5b1e64b25b2d52773f980f9568cbb2ed 100644 (file)
@@ -1075,7 +1075,7 @@ CURLcode Curl_readwrite(struct connectdata *conn,
       */
 
       long ms = Curl_tvdiff(k->now, k->start100);
-      if(ms > CURL_TIMEOUT_EXPECT_100) {
+      if(ms >= CURL_TIMEOUT_EXPECT_100) {
         /* we've waited long enough, continue anyway */
         k->exp100 = EXP100_SEND_DATA;
         k->keepon |= KEEP_SEND;