mirror of
https://github.com/curl/curl.git
synced 2026-08-25 20:43:32 +03:00
ratelimit: redesign
Description of how this works in `docs/internal/RATELIMITS.ms`. Notable implementation changes: - KEEP_SEND_PAUSE/KEEP_SEND_HOLD and KEEP_RECV_PAUSE/KEEP_RECV_HOLD no longer exist. Pausing is down via blocked the new rlimits. - KEEP_SEND_TIMED no longer exists. Pausing "100-continue" transfers is done in the new `Curl_http_perform_pollset()` method. - HTTP/2 rate limiting implemented via window updates. When transfer initiaiting connection has a ratelimit, adjust the initial window size - HTTP/3 ngtcp2 rate limitin implemnented via ack updates - HTTP/3 quiche does not seem to support this via its API - the default progress-meter has been improved for accuracy in "current speed" results. pytest speed tests have been improved. Closes #19384
This commit is contained in:
parent
bfde781121
commit
24b36fdd15
48 changed files with 1146 additions and 675 deletions
|
|
@ -54,7 +54,6 @@
|
|||
#include "../http.h" /* for HTTP proxy tunnel stuff */
|
||||
#include "ssh.h"
|
||||
#include "../url.h"
|
||||
#include "../speedcheck.h"
|
||||
#include "../vtls/vtls.h"
|
||||
#include "../cfilters.h"
|
||||
#include "../connect.h"
|
||||
|
|
@ -2481,17 +2480,13 @@ static CURLcode myssh_block_statemach(struct Curl_easy *data,
|
|||
while((sshc->state != SSH_STOP) && !result) {
|
||||
bool block;
|
||||
timediff_t left_ms = 1000;
|
||||
struct curltime now = curlx_now();
|
||||
|
||||
result = myssh_statemach_act(data, sshc, sshp, &block);
|
||||
if(result)
|
||||
break;
|
||||
|
||||
if(!disconnect) {
|
||||
if(Curl_pgrsUpdate(data))
|
||||
return CURLE_ABORTED_BY_CALLBACK;
|
||||
|
||||
result = Curl_speedcheck(data, now);
|
||||
result = Curl_pgrsCheck(data);
|
||||
if(result)
|
||||
break;
|
||||
|
||||
|
|
@ -2746,10 +2741,7 @@ static CURLcode myssh_do_it(struct Curl_easy *data, bool *done)
|
|||
sshc->secondCreateDirs = 0; /* reset the create directory attempt state
|
||||
variable */
|
||||
|
||||
Curl_pgrsSetUploadCounter(data, 0);
|
||||
Curl_pgrsSetDownloadCounter(data, 0);
|
||||
Curl_pgrsSetUploadSize(data, -1);
|
||||
Curl_pgrsSetDownloadSize(data, -1);
|
||||
Curl_pgrsReset(data);
|
||||
|
||||
if(conn->handler->protocol & CURLPROTO_SCP)
|
||||
result = scp_perform(data, &connected, done);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
#include "../http.h" /* for HTTP proxy tunnel stuff */
|
||||
#include "ssh.h"
|
||||
#include "../url.h"
|
||||
#include "../speedcheck.h"
|
||||
#include "../vtls/vtls.h"
|
||||
#include "../cfilters.h"
|
||||
#include "../connect.h"
|
||||
|
|
@ -3135,10 +3134,7 @@ static CURLcode ssh_block_statemach(struct Curl_easy *data,
|
|||
break;
|
||||
|
||||
if(!disconnect) {
|
||||
if(Curl_pgrsUpdate(data))
|
||||
return CURLE_ABORTED_BY_CALLBACK;
|
||||
|
||||
result = Curl_speedcheck(data, now);
|
||||
result = Curl_pgrsCheck(data);
|
||||
if(result)
|
||||
break;
|
||||
|
||||
|
|
@ -3534,10 +3530,7 @@ static CURLcode ssh_do(struct Curl_easy *data, bool *done)
|
|||
sshc->secondCreateDirs = 0; /* reset the create directory attempt state
|
||||
variable */
|
||||
|
||||
Curl_pgrsSetUploadCounter(data, 0);
|
||||
Curl_pgrsSetDownloadCounter(data, 0);
|
||||
Curl_pgrsSetUploadSize(data, -1);
|
||||
Curl_pgrsSetDownloadSize(data, -1);
|
||||
Curl_pgrsReset(data);
|
||||
|
||||
if(conn->handler->protocol & CURLPROTO_SCP)
|
||||
result = scp_perform(data, &connected, done);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue