-
Notifications
You must be signed in to change notification settings - Fork 844
Signal VC_EVENT_READ_COMPLETE when ATS received END_STREAM flag #6404
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
Conversation
|
I think requiring nghttp on the ci box is quite reasonable. A curl supporting HTTP2 is already pulling in the nghttp2 libraries. I already have added an autest that requires nghttp (which is currently being skipped on the CI). |
|
Does the state machine even understand and set up VIO's for trailing headers yet? I'd argue that this change doesn't help much until the state machine deals with trailing headers. And should it send READ_COMPLETE? Or an EOS? |
|
[approve ci centos] |
|
Why is VC_EVENT_READ_COMPLETE not sent? |
|
As noted on PR #6401 the crashes we are seeing in our environment are not due to trailing headers. |
|
I didn't know
This change doesn't add trailing headers support. Just fix the missing READ_COMPLETE event with the trailing header.
Good point. I'm wondering that the EOS flag on HTTP/2 frame should trigger |
|
@vmamidi As Susan described on #6313 & #6401, after c55001b change, Http2Stream signal VC_EVENT_READ_COMPLETE only if END_STREAM flag is set on the HTTP/2 frame. |
|
As for |
e57e3b0 to
47f8848
Compare
47f8848 to
2cc0bda
Compare
proxy/http2/Http2ConnectionState.cc
Outdated
| } | ||
|
|
||
| // If Data length is 0, do nothing. | ||
| // If Data length is 0 & no END_STREAM flag, do nothing. |
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.
I found another case of missing VC_EVENT_READ_COMPLETE signal on receiving END_STREAM flag. In some cases, this also triggers the crash.
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.
The comment is confusing because this if statement doesn't check the flag. Combine the if blocks or rephrase the comment.
2cc0bda to
71467d3
Compare
71467d3 to
a2322f8
Compare
maskit
left a comment
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.
Looks reasonable.
|
Cherry-picked to v9.0.x branch. |
One of the fixes for #6313. As @maskit pointed out on #6401, the VC_EVENT_READ_COMPLETE event was not sent when ATS received trailing header fields after c55001b. It uncovered an issue of HttpTunnel ( this should be fixed in another PR ).
Update:
Pure END_STREAM DATA frame case could also trigger the crash. Prior to this change, it was ignored like the trailing header with the END_STREAM flag.
TODO:
I used
nghttpwith--traileroption in local tests. But I'm wondering we can usecurlto avoid increasing dependencies of AuTest.