Conversation
seanmonstar
reviewed
Sep 18, 2026
| /// Registers an `on_informational` hook that releases the body on a 100. | ||
| pub fn wrap<B>( | ||
| req: Request<B>, | ||
| sleep: Option<Pin<Box<dyn Sleep>>>, |
Member
There was a problem hiding this comment.
Why accept an Option? Should we not nudge people harder to supply a timeout?
Author
There was a problem hiding this comment.
Hmm, yes, this should probably be stricter and require a timeout as the RFC also states that client SHOULD NOT wait for an indefinite period before sending the content.
I can modify wrap then to accept a timer + a duration. ExpectContinueBody::new can probably continue to accept the option since it's private to the crate and the signal/cancel tests use None, or do you want me to change that too?
This branch has not been deployed
This file contains hidden or 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
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.
Add a request body wrapper which handles the
Expect: 100-continueheader flow.https://www.rfc-editor.org/rfc/rfc9110.html#name-expect
Also adds a utility
wrapwhich wraps a request body inExpectContinueBody, adds theExpect: 100-continueheader if not present, adds anon_informationalhook which signals to release the body.The
poll_frameimplementation parks the body until a signal is received/cancelled or a configured timeout elapses.Tests and a small example are added which demonstrate the behavior.
Closes hyperium/hyper#3833