-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replacing the state.drain
counter with state.dselect_bits
#11005
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- `drain` was used by http/2 and http/3 implementations to indicate that the transfer requires send/recv independant from its socket poll state. Intended as a counter, it was used as bool flag only. - a similar mechanism exists on `connectdata->cselect_bits` where specific protocols can indicate something similar, only for the whole connection. - `cselect_bits` are cleard in transfer.c on use and, importantly, also set when the transfer loop expended its `maxloops` tries. `drain` was not cleared by transfer and the http2/3 implementations had to take care of that. - `dselect_bits` is cleared *and* set by the transfer loop. http2/3 does no longer clear it, only set when new events happen. This PR unifies the handling of socket poll overrides, extending `cselect_bits` by a easy handle specific value and a common treatment in transfers.
This was referenced Apr 21, 2023
- just increasing the http/2 flow window does not necessarily make a server send new data. It may already have exhausted the window before
bagder
approved these changes
Apr 25, 2023
Thanks! |
bagder
pushed a commit
that referenced
this pull request
Apr 25, 2023
bagder
pushed a commit
that referenced
this pull request
Apr 25, 2023
- just increasing the http/2 flow window does not necessarily make a server send new data. It may already have exhausted the window before Closes #11005
bagder
pushed a commit
that referenced
this pull request
Apr 25, 2023
bch
pushed a commit
to bch/curl
that referenced
this pull request
Jul 19, 2023
- `drain` was used by http/2 and http/3 implementations to indicate that the transfer requires send/recv independant from its socket poll state. Intended as a counter, it was used as bool flag only. - a similar mechanism exists on `connectdata->cselect_bits` where specific protocols can indicate something similar, only for the whole connection. - `cselect_bits` are cleard in transfer.c on use and, importantly, also set when the transfer loop expended its `maxloops` tries. `drain` was not cleared by transfer and the http2/3 implementations had to take care of that. - `dselect_bits` is cleared *and* set by the transfer loop. http2/3 does no longer clear it, only set when new events happen. This change unifies the handling of socket poll overrides, extending `cselect_bits` by a easy handle specific value and a common treatment in transfers. Closes curl#11005
bch
pushed a commit
to bch/curl
that referenced
this pull request
Jul 19, 2023
bch
pushed a commit
to bch/curl
that referenced
this pull request
Jul 19, 2023
- just increasing the http/2 flow window does not necessarily make a server send new data. It may already have exhausted the window before Closes curl#11005
bch
pushed a commit
to bch/curl
that referenced
this pull request
Jul 19, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
drain
was used by http/2 and http/3 implementations to indicate that the transfer requires send/recv independant from its socket poll state. Intended as a counter, it was used as bool flag only.connectdata->cselect_bits
where specific protocols can indicate something similar, only for the whole connection.cselect_bits
are cleard in transfer.c on use and, importantly, also set when the transfer loop expended itsmaxloops
tries.drain
was not cleared by transfer and the http2/3 implementations had to take care of that.dselect_bits
is cleared and set by the transfer loop. http2/3 does no longer clear it, only set when new events happen.This PR unifies the handling of socket poll overrides, extending
cselect_bits
by a easy handle specific value and a common treatment in transfers.