Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This function is made to loop in order to drain incoming data faster. Completely removing the loop has a measerably negative impact on transfer speeds.
Downsides with the looping include
it might call the progress callback much more seldom. Especially if the write callback is slow.
rate limiting becomes less exact
a single transfer might "starve out" other parallel transfers
QUIC timers for other connections can't be maintained correctly
The long term fix should be to remove the loop and optimize coming back to avoid the transfer speed penalty.
This fix lower the max loop count to reduce the starvation problem, and avoids the loop completely for when rate-limiting is in progress.
Ref: #12488
Ref: https://curl.se/mail/lib-2023-12/0012.html