-
Notifications
You must be signed in to change notification settings - Fork 73
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
Should sending a GOAWAY frame on header decompression error be valid? #60
Comments
Your understanding of the spec is correct. However, this test is expected that the stream is closed properly, by sending two "Dynamic Table Size Update". Does your implementation treats "Dynamic Table Size Update" of HPACK as decompression error? |
I believe so. I receive the two hpack dynamic size updates, detect the decompression error, send a GOAWAY w/ COMPRESSION_ERROR set as the reason, then terminate the connection. I believe that the issue is the test uses If I removed the GOAWAY frame before closing the connection, the test passed. |
This test is verifying that your implementation can handle correctly the dynamic table size update. If your implementation respond with GOAWAY, this test will be failed. Why does your implementation treats the dynamic table size update as a decompression error? |
Ok, I understand the question. The test sends two dynamic table size updates (0 and 4096) at the beginning of a single header block. The HPack spec contains the following:
My interpretation of this is that a single header frame can contain at most one dynamic table update and it must be at the beginning of the frame. I also see this:
Again, my interpretation of this is that these dynamic updates must be in separate header frames. I guess this is an incorrect interpretation? |
In paragraph:
I was reading "Multiple updates to the maximum table size" as receiving HTTP/2 settings frames w/ the max table size setting set, not multiple dynamic updates in the header block. |
I think this states that 2 dynamic table size updates can occur at the front of encoded header block. If you still think it shouldn't, please ask this on IETF httpbis mailing list. |
Ok, thanks. I believe this is a misread on my part. Sorry for the trouble. |
My current HTTP/2 server implementation sends a GOAWAY frame before terminating the connection when it hits an hpack decompression error. My read of the http2 spec is that this is valid, however this test fails:
https://github.com/summerwind/h2spec/blob/master/4_3.go#L26-L47
The test passes if I don't send the GOAWAY frame before terminating the connection. Is this expected?
The text was updated successfully, but these errors were encountered: