Skip to content

[v14.x] http2: use and support non-empty DATA frame with END_STREAM flag #34838

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Closed
wants to merge 1 commit into from

Conversation

clshortfuse
Copy link
Contributor

@clshortfuse clshortfuse commented Aug 19, 2020

Adds support for reading from a stream where the final frame is a
non-empty DATA frame with the END_STREAM flag set, instead of hanging
waiting for another frame. When writing to a stream, uses a
END_STREAM flag on final DATA frame instead of adding an empty
DATA frame.

BREAKING: http2 client now expects servers to properly support
END_STREAM flag

Fixes: #31309
Fixes: #33891
Refs: https://nghttp2.org/documentation/types.html#c.nghttp2_on_data_chunk_recv_callback

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@clshortfuse clshortfuse requested review from a team as code owners August 19, 2020 04:59
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/http2
  • @nodejs/net

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. v14.x labels Aug 19, 2020
@clshortfuse clshortfuse changed the title http2: use and support non-empty DATA frame with END_STREAM flag http2: (backport v14.x) use and support non-empty DATA frame with END_STREAM flag Aug 19, 2020
@clshortfuse
Copy link
Contributor Author

Only difference between this and #33875 are two debug lines that had to be removed. v14.x can't debug a stream object without an attached session.

@clshortfuse
Copy link
Contributor Author

Rebased against 14.x-staging (was behind 640 commits). Also commented out 14.x incompatible lines instead of just outright removing them.

@danielleadams
Copy link
Contributor

@clshortfuse clshortfuse requested a review from a team August 20, 2020 14:06
Adds support for reading from a stream where the final frame is a
non-empty DATA frame with the END_STREAM flag set, instead of hanging
waiting for another frame. When writing to a stream, uses a
END_STREAM flag on final DATA frame instead of adding an empty
DATA frame.

BREAKING: http2 client now expects servers to properly support
END_STREAM flag

Fixes: nodejs#31309
Fixes: nodejs#33891
Refs: https://nghttp2.org/documentation/types.html#c.nghttp2_on_data_chunk_recv_callback
@MylesBorins
Copy link
Contributor

MylesBorins commented Aug 20, 2020

Went ahead and rebased as the change went out of sync with v14.x-staging

CI: https://ci.nodejs.org/job/node-test-pull-request/32872/

@danielleadams it would be very good to get this included in next weeks release. Thanks for the hard work.

Resume CI for windows failure: https://ci.nodejs.org/job/node-test-pull-request/32873/

@MylesBorins MylesBorins changed the title http2: (backport v14.x) use and support non-empty DATA frame with END_STREAM flag [v14.x] http2: use and support non-empty DATA frame with END_STREAM flag Aug 20, 2020
MylesBorins pushed a commit that referenced this pull request Aug 21, 2020
Adds support for reading from a stream where the final frame is a
non-empty DATA frame with the END_STREAM flag set, instead of hanging
waiting for another frame. When writing to a stream, uses a
END_STREAM flag on final DATA frame instead of adding an empty
DATA frame.

BREAKING: http2 client now expects servers to properly support
END_STREAM flag

Fixes: #31309
Fixes: #33891
Refs: https://nghttp2.org/documentation/types.html#c.nghttp2_on_data_chunk_recv_callback

PR-URL: #33875
Backport-PR-URL: #34838
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
@MylesBorins
Copy link
Contributor

landed in 9e0d18f

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants