Hello, everyone
I'm stuck with a problem and asking for a help.
Context:
we have a project that contains a HTTP client with Lua API implemented
using Curl library, sources are [3] and [4].
This Lua HTTP client used in another closed-source Lua module that
implements an etcd client in Lua.
Before Curl version 8.4.0 everything worked fine (exactly with Curl
8.3.0), but after updating Curl to 8.4.0 in our HTTP client
some tests for etcd-client Lua module became failed from time to time.
There are test logs for passed and failed cases with enabled debug in
curl: [5] and [6] and diff [7].
Observations:
1. The problem is specific for HTTP/2 protocol, because problem is gone
if force HTTP 1.1 protocol with CURL_HTTP_VERSION_1_1.
2. Problem is triggered by commit [3] introduced in Curl 8.4.0 [4],
because the problem is gone after reverting aforementioned commit.
Symptoms:
curl library with enabled debug prints a message below before a test fail:
> readwrite, dselect_bits, early return on PAUSED
This message was introduced in aforementioned commit to curl library.
Current version of Curl library: 8.5.0
OS: Ubuntu x86_64 22.04
What could cause a problem? As I got a debug message right connection
become paused
and no one unpause it. Curl callback 'curl_easy_io_read_cb' returns
CURL_READFUNC_PAUSE
and on next read httpc_request_io_write unpauses connection with
CURLPAUSE_SEND_CONT.
1. https://github.com/tarantool/tarantool/blob/master/src/curl.c
2. https://github.com/tarantool/tarantool/blob/master/src/httpc.c
3.
https://github.com/curl/curl/commit/6b9a591bf7d82031f463373706d7de1cba0adee6
4. https://curl.se/changes.html#8_4_0
5.
https://github.com/ligurio/snippets/blob/master/curl-question/curl-fail.log
6.
https://github.com/ligurio/snippets/blob/master/curl-question/curl-pass.log
7.
https://github.com/ligurio/snippets/blob/master/curl-question/curl-diff.log
--
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette: https://curl.se/mail/etiquette.html