Skip to content
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

Backport 0.14.x: is_complete_fast #3765

Merged
merged 1 commit into from
Oct 15, 2024
Merged

Conversation

seanmonstar
Copy link
Member

Backport #3764 to 0.14.x.

If request headers are received in incremental partial chunks, hyper
would restart parsing each time. This is because the HTTP/1 parser is
stateless, since the most common case is a full message and stateless
parses faster.

However, if continuing to receive more partial chunks of the request,
each subsequent full parse is slower and slower. Since partial parses is
less common, we can store a little bit of state to improve performance
in general.

Now, if a partial request is received, hyper will check for the end of
the message quickly, and if not found, simply save the length to allow
the next partial chunk to start its search from there. Only once the end
is found will a fill parse happen.

Reported-by: Datong Sun <[email protected]>
@seanmonstar seanmonstar force-pushed the 0.14-backport-is-complete-fast branch from ce28d45 to e3aab95 Compare October 15, 2024 15:51
@seanmonstar seanmonstar merged commit 97b595e into 0.14.x Oct 15, 2024
19 checks passed
@seanmonstar seanmonstar deleted the 0.14-backport-is-complete-fast branch October 15, 2024 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant