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
The stream ID in GOAWAY #63
Comments
In GOAWAY:
I think this really needs to be (in both places) "the last stream successfully initiated by the peer." "Processed" is misleading. |
Yes, agreed on all counts. The definition of "processed" and even "received" needs to be a lot crisper. And peer is used enough times to also have a crisp definition. The intent is to use GOAWAY to indicate the last stream that has been received AND acted upon in its entirety. The behaviour of GOAWAY under error conditions clearly needs to be different because the connection close follows immediately, whereas a GOAWAY under a graceful shutdown can be sent well ahead of the connection being closed, allowing streams to complete safely. |
A few comments:
The current use of the frame (at least on the server side) has been to indicate the highest numbered stream ID that will not be refused. So for example if a client has initiated streams 1, 3, 5, and 7, with streams 1 and 5 being half-closed on the client side and 3 and 7 being open, the server on shutting down the connection would send a GOAWAY frame with stream ID 7, indicating that it will continue to accept frames for streams 3 and 7 but will refuse to accept streams 9 and higher. In the session error case, the meaning of the frame does not have to change, even if connection close follows immediately. It indicates to the client that stream 9 may be resent automatically but streams 3 and 7 may not. |
Take a look at the edits that I made in the above commit and let me know if that helps. This captures, I hope, what @jpinner was trying to explain. |
"An endpoint that encounters a session error MUST first send a GOAWAY frame with the stream identifier of the last stream that it successfully received from its peer."
What does that mean? Is it the stream ID of the last frame received from its peer, regardless of who initiated the stream? Is it the last successfully initiated stream by the peer?
We also use "peer" a fair amount without defining it...
The text was updated successfully, but these errors were encountered: