summaryrefslogtreecommitdiff
path: root/lib/multi.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2021-02-22 13:03:02 +0100
committerDaniel Stenberg <daniel@haxx.se>2021-02-22 15:54:46 +0100
commitbf601472a0f09ff5fa80a048f22a30ac9edac304 (patch)
tree2bc0facaadeb121d5bd4176f53250fa5e0d9bd58 /lib/multi.c
parent628078ddb775438faeda00b1a980549ba9caf50c (diff)
downloadcurl-bf601472a0f09ff5fa80a048f22a30ac9edac304.tar.gz
multi: do once-per-transfer inits in before_perform in DID state
... since the state machine might go to RATELIMITING and then back to PERFORMING doing once-per-transfer inits in that function is wrong and it caused problems with receiving chunked HTTP and it set the PRETRANSFER time much too often... Regression from b68dc34af341805aeb7b3715 (shipped in 7.75.0) Reported-by: Amaury Denoyelle Fixes #6640 Closes #6641
Diffstat (limited to 'lib/multi.c')
-rw-r--r--lib/multi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/multi.c b/lib/multi.c
index 2a8a2df96..9de3f4008 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -105,8 +105,8 @@ static const char * const statename[]={
/* function pointer called once when switching TO a state */
typedef void (*init_multistate_func)(struct Curl_easy *data);
-/* called when the PERFORM state starts */
-static void init_perform(struct Curl_easy *data)
+/* called in DID state, before PERFORMING state */
+static void before_perform(struct Curl_easy *data)
{
data->req.chunk = FALSE;
Curl_pgrsTime(data, TIMER_PRETRANSFER);
@@ -142,8 +142,8 @@ static void mstate(struct Curl_easy *data, CURLMstate state
Curl_connect_free, /* DO */
NULL, /* DOING */
NULL, /* DOING_MORE */
- NULL, /* DID */
- init_perform, /* PERFORMING */
+ before_perform, /* DID */
+ NULL, /* PERFORMING */
NULL, /* RATELIMITING */
NULL, /* DONE */
init_completed, /* COMPLETED */