-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
[Regression][2] libcurl does not finish CURLOPT_UPLOAD request after a connection lost without data tranfer #13740
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
Comments
Sorry to hear that the problem seems to have resurfaced. As you remember, we added a specific test case for the situation and that has been succeeding ever since. If we have exactly that problem again, the test cases just does not seem to cover the complete scenario that your application runs into. I will try to run the original reported client #11769 with an etcd to see if that still fails. |
I have run the example exactly as described in #11769 and the test client terminates after killing the etcd server. Do you have more information about the problems you see? |
@icing Stefan, I have a full log with messages produced by etcd and curl built with debug. curl version: d18bba68d678fdce9aeb47c01ac6e705931129d2 log.txt
I'm not sure that you are interested in a reproducer because currently it is complicated: it involves tarantool (curl is builtin), etcd, proprietary Lua module |
Thanks, that log might give me an idea how to extend our test scenarios. |
adding edge cases, possible workaround refs curl#13740 - add 2 variations on test_07_42 which PAUSEs uploads and response connections terminating either right away or after the 100-continue response - when detecting the connection being closed in transfer.c readwrite_data(), clear ALL send bits in data->req.keepon. It no longer makes send to wait for a KEEP_SEND_PAUSE or HOLD. - in the protocol client writer add the check for incomplete response bodies. When an EOS is seen and the length is known, check that and fail if bytes are missing.
I changed my test client and added more server edge behaviour in tests. I was able to reproduce a condition where curl would not terminate a transfer after the connection had been closed. This seems to match the output from your log files. It would be great to know if #13750 works for you as well. |
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because commit 30de937bda0f ("transfer: conn close on paused upload") fixes a regression catched on the previous bump [2]. The new version brings a number of functional fixes, and updates CMake module for building curl library. Changes in CMake module: - TBD Changelog entry has been removed because duplicate entries about bumps confuses end users. Closes #9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_CHANGELOG=libcurl submodule bump NO_TEST=libcurl submodule bump
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes tarantool#9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes #9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes tarantool#9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump (cherry picked from commit 7192bf6)
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes tarantool#9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump (cherry picked from commit 7192bf6)
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes #9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump (cherry picked from commit 7192bf6)
The patch updates curl module to the version 8.8.0 [1] plus a number of commits in a range curl-8_8_0..30de937bda0f because it includes a fix for a regression [2] caught on the previous bump. The new version brings a number of functional fixes. Previous changelog entry has been removed because duplicate entries about bumps in release changelog confuses end users. Closes #9612 1. https://curl.se/changes.html#8_8_0 2. curl/curl#13740 NO_DOC=libcurl submodule bump NO_TEST=libcurl submodule bump (cherry picked from commit 7192bf6)
I did this
There was an issue in Tarantool 1 due to regression in libcurl (#11769), it was reported on 23 Aug, 2023. Issue was fixed in upstream on 4 Sept, 2023 and fix was confirmed by our tests for Tarantool. Unfortunately, this fix was ruined by refactoring made in commit d7b6ce6 ("lib: replace readwrite with write_resp") [3] on 1 Dec 2023, and now it is reproduced again. Then it was fixed in #13260 and regression test was added within fix. However, commit 270a25c that fixes #13337 broke fix again.
I expected the following
Fix of the original problem.
curl/libcurl version
270a25c
operating system
Ubuntu 22.04 amd64
Footnotes
https://github.com/tarantool/tarantool/issues/9086 ↩ ↩2
The text was updated successfully, but these errors were encountered: