-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
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
libcurl using client reports curl error 92 "Stream error in the HTTP/2 framing layer" when receiving a 204 No content reponse from HTTP/2 server to a DELETE request #13678
Comments
@zazola thanks for the detailed report. I wrote a test case simulating exactly that request against an Apache to send back the HTTP/2 HEADER frame with eos=0 and then a later DATA frame, length=0 and eos=1. This works with curl 8.5.0 and current What I see in the wireshark screenshot looks peculiar. The server seems to send the DATA frame inside the TLS shutdown notice record. I am not 100% sure, but that does not look right. |
How can we move forward? You could add a CURLOPT_DEBUGFUNCTION to your app, and call The command line |
Hi, Sorry for the late response, I have been trying to confine more the issue I'm experiencing. Test scenarioUsing curl cli tool in versions:
where I have one single endpoint that checks GET and DELETE requests, both being responding a OutcomeVersion 7.86 and 7.87 seem to have the issue I'm having most of the times (either being request method GET or DELETE). However the issue seem to be fixed in v7.88.0, so I'm going to check my libcurl and nghttp2 dependencies in my C++ client, as I thought being tested in libcurl 7.83, 7.86 and 8.5.0. But I might have made a mistake inclusing v8.5.0 or alike, as it seems to be fixed already from 7.88.0 on. Trace messages:
Result:
Result: Correct handling:
Erroneous handling:
|
From our point of view, everything here is solved as it seems fixed in current versions. |
Sorry for the late response, yes indeed in the 8.8.0 version everything seems to be solved in libcurl. |
I did this
Overview
libcurl based C++ client
After having tested HTTP2 POST and GETs against the same server (an h2-hypercorn server using Python's Quart module to generate responses), a DELETE request that gets a 204 No Content response, can't be handled by libcurl in my C++ programmed client. This what I get in my C++ client:
Checking the network traffic capture I see the following:
In the C++ client I tried the following libcurl versions: 7.83, 7.86 and 8.5.0. All of them have the same behavior.
curl CLI tool
I also tried performing the DELETE with the curl command line tool on a:
However in the version 7.86 it performs the DELETE properly, but falling back to HTTP/1.1 instead of HTTP/2 (as specified in the command line).
Not sure if I'm doing something wrong or if it's some sort of issue in the HTTP2 implementation.
I expected the following
Libcurl being able to handle a seemingly correct HTTP2 204 response without reporting the 92 error.
curl/libcurl version
libcurl, 7.83, 7.86, 8.5.0 (all have same behavior)
curl 7.86
operating system
Linux 21310-1044 5.15.146.1-microsoft-standard-WSL2 #1 SMP Thu Jan 11 04:09:03 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
The text was updated successfully, but these errors were encountered: