-
Notifications
You must be signed in to change notification settings - Fork 40
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
v2.0.10 causes curl "Error in the HTTP2 framing layer" while running git's test suite #243
Comments
…fer-Encoding" is part of the request. Refs #243 - mod_h2 does not perform Upagrde to h2c on a HTTP/1.1 request when the request has a body. - The check for this was incomplete, looking only at Content-Length, but not Transfer-Encoding
@peff: interesting. There are two issues in play here. The two logs start to deviate after the initial GET has been upgraded to HTTP/2.:
where curl thinks the upgraded HTTP/2 connection is no longer open and tries another one. Since there are no time stamps in the logs, I cannot see what possibly causes this. A clean server log, possible with After that, curl opens another connection - as it should - but there it only does POST requests. The first, with a The second one carries no In mod_h2 v2.0.12 I fixed this and those requests will also not be upgraded. This might lead to your tests passing, but note that all requests there will be in HTTP/1.1. At least until one request without a body is made. HTTP/1.1 Upgrade is a fickle thing. The more reliable way is to either use |
@icing Thanks both for taking the time to dig through the logs, and for your explanations. I did notice the "Connection 0 seems to be dead", but being fairly clueless about HTTP/2 myself, didn't realize the implications of causing an upgrade on the later POST. I tried your v2.0.12, and it indeed fixes the test failure. Should we consider it a curl bug that it asks for upgrade on a request with a body? If so, I can report it there. I'm attaching an error.log with Thanks also for your advice on It is possible that we'd want to expose some way for users to set |
Git's test suite added support a few months ago for running its http tests using http2 via apache. Since upgrading to mod_http v2.0.10 (via updating my Debian package of apache2 to v2.4.55), one test consistently fails. The issue is that on a larger fetch, libcurl fails after the protocol upgrade with:
The last request is a POST. I've attached two traces from the git client side which show the actual sequence of requests. One with mod_http 2.0.9 that succeeds, and one with 2.0.10 which fails. On the server side, there's no error in the log at all. If I crank
LogLevel
todebug
, there's lots of output but nothing that looks like an obvious problem to me. Here's anerror.log for the failing case.
Bisecting within the mod_h2 repository, the problem starts at 16ffed9. It's possible the problem is on the Git or libcurl side, but given that this commit is just meant to be refactoring, it makes me suspicious that there's some unintended bug.
I'm sorry that I don't have a more minimal reproduction recipe, but here's what I used to bisect:
There's also some discussion on the Git mailing list, but I've tried above to summarize everything useful.
I'm happy to investigate more on my end if you have suggestions.
The text was updated successfully, but these errors were encountered: