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

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 b68dc34af3 (shipped in 7.75.0)

Reported-by: Amaury Denoyelle
Fixes #6640
Closes #6641
This commit is contained in:
Daniel Stenberg 2021-02-22 13:03:02 +01:00
parent 628078ddb7
commit bf601472a0
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2

View File

@ -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 */