-
Notifications
You must be signed in to change notification settings - Fork 844
Improve client_vc tracking #6889
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -241,9 +241,12 @@ rcv_headers_frame(Http2ConnectionState &cstate, const Http2Frame &frame) | |
|
|
||
| if (cstate.is_valid_streamid(stream_id)) { | ||
| stream = cstate.find_stream(stream_id); | ||
| if (stream == nullptr || !stream->has_trailing_header()) { | ||
| if (stream == nullptr) { | ||
| return Http2Error(Http2ErrorClass::HTTP2_ERROR_CLASS_CONNECTION, Http2ErrorCode::HTTP2_ERROR_STREAM_CLOSED, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this for 5.1. Stream States says below
Probably, we need to break down the conditions in line 244
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was to fix one of the h2spec cases. I'll update to split the cases here to return two different error codes.
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Specifically it was a problem in the 8 section. I assume in earlier version of the PR when the netvc close was in the Http2ClientSession::do_io_close() the "Connection closed" case triggered and addressed these cases. Splitting the checks as you suggest also solves the issue. |
||
| "recv headers cannot find existing stream_id"); | ||
| } else if (!stream->has_trailing_header()) { | ||
| return Http2Error(Http2ErrorClass::HTTP2_ERROR_CLASS_CONNECTION, Http2ErrorCode::HTTP2_ERROR_PROTOCOL_ERROR, | ||
| "recv headers cannot find existing stream_id"); | ||
| } | ||
| } else { | ||
| // Create new stream | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So, what we needed at #6809 was only changes in HttpSM after all?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the changes in this PR moved the netvc close back to the Http1ClientSession::do_io_close(). So with that change, we didn't need the extra handler added in #6809 to track the netvc object between the time it got a terminal event and we freed the Http1ClientSession.