From: Daniel Stenberg Date: Wed, 24 Jun 2015 00:48:37 +0000 (-0700) Subject: pretransfer: init state.infilesize here, not in add_handle X-Git-Tag: curl-7_44_0~138 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=903b6e05565bf;p=thirdparty%2Fcurl.git pretransfer: init state.infilesize here, not in add_handle ... to properly support that options are set to the handle after it is added to the multi handle. Bug: http://curl.haxx.se/mail/lib-2015-06/0122.html Reported-by: Stefan Bühler --- diff --git a/lib/multi.c b/lib/multi.c index b63f8bf70a..a8d3e38b59 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -402,11 +402,6 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle, /* Point to the multi's connection cache */ data->state.conn_cache = &multi->conn_cache; - if(data->set.httpreq == HTTPREQ_PUT) - data->state.infilesize = data->set.filesize; - else - data->state.infilesize = data->set.postfieldsize; - /* This adds the new entry at the 'end' of the doubly-linked circular list of SessionHandle structs to try and maintain a FIFO queue so the pipelined requests are in order. */ diff --git a/lib/transfer.c b/lib/transfer.c index 28cc61ecc6..32e8702e68 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -1315,6 +1315,11 @@ CURLcode Curl_pretransfer(struct SessionHandle *data) Curl_safefree(data->info.wouldredirect); data->info.wouldredirect = NULL; + if(data->set.httpreq == HTTPREQ_PUT) + data->state.infilesize = data->set.filesize; + else + data->state.infilesize = data->set.postfieldsize; + /* If there is a list of cookie files to read, do it now! */ if(data->change.cookielist) Curl_cookie_loadfiles(data);