-
-
Notifications
You must be signed in to change notification settings - Fork 289
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
Specify a closed stream with the CANCEL
code as valid
#600
Conversation
Hey, thanks for the PR! Hm, I'd love to understand this better. I think the current behavior is correct, that if the server sends a |
Not really 🤔 Although the name of code is contradictory, this code only says that the stream is no longer needed. It looks consistent with the state graph. |
Hi. I want to add a few details since we worked with @DDtKey on this issue. We met a flaky integration test, where we sent a large request from |
To be clear, |
I see, I think I understand the issue now. The problem isn't so much about |
Looks good to me. However, I'm still thinking that, in accordance with spec, |
@glebpom While I understand that applications may want to handle these cases similarly--and I agree it's important to fix the current behavior--I think it would be bad if we lost the ability to differentiate a For example, imagine if a proxy is transporting a HTTP/2 stream. We'd want the proxy to propagate the |
@olix0r Ok, that makes sense. Seems like on the |
It looks good to me too. |
2ab5d2e
to
37fd336
Compare
A long time has passed since we discussed the bug. We observed the same problem a few more times with different client implementations on the unpatched h2 versions. |
Hi, @seanmonstar @olix0r. Any updates on this? Thanks |
37fd336
to
bec9e5e
Compare
It may cause hanging, because result isn't checked
@seanmonstar I noticed several usages of This can be an issue even without this fix, because there is another match-branch in master: So it seems for me logic is incorrect right now, I'm created separate PR to address this: #687 |
After testing the case against latest Now the cc @seanmonstar I'm closing this PR because the way to fix should be different now. UPD: looks like it’s directly related to hyperium/hyper#2872 |
According to HTTP/2, the
CANCEL
code only indicates that the stream is no longer needed.CANCEL (0x8): Used by the endpoint to indicate that the stream is no longer needed.
But when the client receives the response body data and the
CANCEL
code from the server, it returns an error.Error example with
hyper
:This happens due to incorrect checking of an open stream:: link