mirror of
https://github.com/curl/curl.git
synced 2026-08-24 14:03:35 +03:00
progress: ratelimit/progress tweaks
- multi.c: when ratelimiting a transfer stops (MSTATE_RATELIMITING -> MSTATE_PERFORMING), run the MSTATE_PERFORMING state right away - urldata.h: factor out upload and download progress counters into a struct, use that for passing these to progress update functions - progress.c/getinfo.c: change names of moved progress counters - progress.c: use new structs and a helper struct to factor repeated calculation into static helpers Closes #14335
This commit is contained in:
parent
eb0a366b70
commit
ba44ac62e3
5 changed files with 128 additions and 146 deletions
18
lib/multi.c
18
lib/multi.c
|
|
@ -2384,24 +2384,22 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||
send_timeout_ms = 0;
|
||||
if(data->set.max_send_speed)
|
||||
send_timeout_ms =
|
||||
Curl_pgrsLimitWaitTime(data->progress.uploaded,
|
||||
data->progress.ul_limit_size,
|
||||
Curl_pgrsLimitWaitTime(&data->progress.ul,
|
||||
data->set.max_send_speed,
|
||||
data->progress.ul_limit_start,
|
||||
*nowp);
|
||||
|
||||
recv_timeout_ms = 0;
|
||||
if(data->set.max_recv_speed)
|
||||
recv_timeout_ms =
|
||||
Curl_pgrsLimitWaitTime(data->progress.downloaded,
|
||||
data->progress.dl_limit_size,
|
||||
Curl_pgrsLimitWaitTime(&data->progress.dl,
|
||||
data->set.max_recv_speed,
|
||||
data->progress.dl_limit_start,
|
||||
*nowp);
|
||||
|
||||
if(!send_timeout_ms && !recv_timeout_ms) {
|
||||
multistate(data, MSTATE_PERFORMING);
|
||||
Curl_ratelimit(data, *nowp);
|
||||
/* start performing again right away */
|
||||
rc = CURLM_CALL_MULTI_PERFORM;
|
||||
}
|
||||
else if(send_timeout_ms >= recv_timeout_ms)
|
||||
Curl_expire(data, send_timeout_ms, EXPIRE_TOOFAST);
|
||||
|
|
@ -2417,19 +2415,15 @@ static CURLMcode multi_runsingle(struct Curl_multi *multi,
|
|||
/* check if over send speed */
|
||||
send_timeout_ms = 0;
|
||||
if(data->set.max_send_speed)
|
||||
send_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.uploaded,
|
||||
data->progress.ul_limit_size,
|
||||
send_timeout_ms = Curl_pgrsLimitWaitTime(&data->progress.ul,
|
||||
data->set.max_send_speed,
|
||||
data->progress.ul_limit_start,
|
||||
*nowp);
|
||||
|
||||
/* check if over recv speed */
|
||||
recv_timeout_ms = 0;
|
||||
if(data->set.max_recv_speed)
|
||||
recv_timeout_ms = Curl_pgrsLimitWaitTime(data->progress.downloaded,
|
||||
data->progress.dl_limit_size,
|
||||
recv_timeout_ms = Curl_pgrsLimitWaitTime(&data->progress.dl,
|
||||
data->set.max_recv_speed,
|
||||
data->progress.dl_limit_start,
|
||||
*nowp);
|
||||
|
||||
if(send_timeout_ms || recv_timeout_ms) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue