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

Nima - HTTP/2 Client - outbound continuation #6543

Closed
Tracked by #5425
danielkec opened this issue Apr 3, 2023 · 0 comments · Fixed by #6907
Closed
Tracked by #5425

Nima - HTTP/2 Client - outbound continuation #6543

danielkec opened this issue Apr 3, 2023 · 0 comments · Fixed by #6907
Assignees
Labels
4.x Version 4.x Níma Helidon Níma P3
Projects
Milestone

Comments

@danielkec
Copy link
Contributor

danielkec commented Apr 3, 2023

Nima HTTP/2 client needs to be able to split too large header frame to 1 x frame followed by n x Continuation frame

10.5.1. Limits on Header Block Size
A large header block (Section 4.3) can cause an implementation to commit a large amount of state. Header fields that are critical for routing can appear toward the end of a header block, which prevents streaming of header fields to their ultimate destination. This ordering and other reasons, such as ensuring cache correctness, mean that an endpoint might need to buffer the entire header block. Since there is no hard limit to the size of a header block, some endpoints could be forced to commit a large amount of available memory for header fields.

An endpoint can use the SETTINGS_MAX_HEADER_LIST_SIZE to advise peers of limits that might apply on the size of header blocks. This setting is only advisory, so endpoints MAY choose to send header blocks that exceed this limit and risk having the request or response being treated as malformed. This setting is specific to a connection, so any request or response could encounter a hop with a lower, unknown limit. An intermediary can attempt to avoid this problem by passing on values presented by different peers, but they are not obligated to do so.

A server that receives a larger header block than it is willing to handle can send an HTTP 431 (Request Header Fields Too Large) status code [RFC6585]. A client can discard responses that it cannot process. The header block MUST be processed to ensure a consistent connection state, unless the connection is closed.

@danielkec danielkec added 4.x Version 4.x Níma Helidon Níma labels Apr 3, 2023
@github-actions github-actions bot added this to Triage in Backlog Apr 3, 2023
@danielkec danielkec mentioned this issue Apr 3, 2023
5 tasks
@danielkec danielkec changed the title [4.x] HTTP/2 Client - outbound Continuation Nima - HTTP/2 Client - outbound Continuation Apr 3, 2023
@danielkec danielkec changed the title Nima - HTTP/2 Client - outbound Continuation Nima - HTTP/2 Client - outbound continuation Apr 3, 2023
@danielkec danielkec moved this from Triage to Normal priority in Backlog Apr 3, 2023
@danielkec danielkec added this to the 4.0.0-M2 milestone Apr 3, 2023
@danielkec danielkec added the P3 label Apr 3, 2023
@danielkec danielkec self-assigned this May 23, 2023
@danielkec danielkec moved this from Normal priority to Sprint Scope in Backlog May 23, 2023
@danielkec danielkec linked a pull request Jun 8, 2023 that will close this issue
@m0mus m0mus closed this as completed Jun 26, 2023
Backlog automation moved this from Sprint Scope to Closed Jun 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
4.x Version 4.x Níma Helidon Níma P3
Projects
Backlog
  
Closed
Development

Successfully merging a pull request may close this issue.

2 participants