Commit f91d5786 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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
parent 9df82573
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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)