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
h2c Interop issue - nghttpx & curl #103
Comments
I found the bug in Curl code to handle HTTP/2.
|
To clarify, are you saying the SETTINGS frame is appended to the response HTTP/1.1 101 Switching Protocols? Looking at a packet trace, I can see the this happening in 0x80
Thank you for the patch, tomorrow, we will test and confirm if it fixes the issue we have seen. |
Yes, SETTINGS is appended after upgrade response header. This is very common, so it is strange we did not spot it before. Maybe we just focused to TLS too much. |
Please do Tatsuhiro, this is a curl flaw I've seen in my local branch working on a http2 test suite for curl but I've not gotten as far as actually fixing it (nor merging my test suite work into the master branch yet). |
OK, I'll post patch to libcurl ML soon. |
We can confirm that Tatsuhiro's patch fixes the reported issue. Credit to Sam Hurst for helping in identifying the issue and testing the patch on our side. |
Thank you. Since I submitted the patch to libcurl ML and this is libcurl issue, this issue is now closed. |
Thanks everyone, fix has been merged in curl now. |
Great! |
We are experiencing an intermittent interop issue between nghttpx (hosted at http://nghttp2.org) and curl 7.39.0 built with nghttp2 0.6.6 when performing a HTTP/2 upgrade to h2c.
The upgrade works always as expected but 1-in-3 times the response is not correctly processed by curl. A packet trace indicates that curl receives a SETTINGS frame after it was expected - the server sends HEADERS and DATA before the SETTINGS. The client then sends a GOAWAY with PROTOCOL_ERROR (SETTINGS expected), curl does not report the returned file(s) and exits
It seems like nghttpx is not following the expected sequence as defined in section 3.5 but I would like to confirm this.
NOTE: we are using a SOCKS proxy to ensure that no intermediary is affecting the upgrade header.
Command line
curl --http2 -v http://nghttp2.org
The text was updated successfully, but these errors were encountered: