Initially found this as a bug on 7.64.1, where curl with CURLOPT_PIPEWAIT and CURLMOPT_MULTIPLEX on a HTTP/1.1 server would fail to execute requests concurrently until the second batch of requests were scheduled. However, the behavior seems to have gotten worse on the latest master, and now results in a curl hang at 100% CPU usage.
Code:
#include "curl/curl.h"
int main(int argc, char** argv)
{
CURLM *multi = curl_multi_init();
curl_multi_setopt(multi, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
curl_multi_setopt(multi, CURLMOPT_MAX_HOST_CONNECTIONS, 4);
int i;
for (i = 0; i < 5; i++) {
CURL *easy = curl_easy_init();
curl_easy_setopt(easy, CURLOPT_URL, "https://httpbin.org/delay/2");
curl_easy_setopt(easy, CURLOPT_VERBOSE, 1);
curl_easy_setopt(easy, CURLOPT_PIPEWAIT, 1);
curl_easy_setopt(easy, CURLOPT_NOPROXY, "");
curl_easy_setopt(easy, CURLOPT_PROXY, "http://my-http-proxy:3128");
curl_multi_add_handle(multi, easy);
}
int running= 1;
while (running) {
int numfds;
curl_multi_perform(multi, &running);
curl_multi_wait(multi, NULL, 0, 1000, &numfds);
}
curl_multi_cleanup(multi);
return 0;
}
On 7.64.1, this will take ~10 seconds to run. On master, this hangs.
* Connection #0 to host my-http-proxy left intact
* Found bundle for host httpbin.org: 0x1b99f00 [serially]
* Server doesn't support multiplex yet, wait
* No connections available.
The text was updated successfully, but these errors were encountered:
Initially found this as a bug on 7.64.1, where curl with
CURLOPT_PIPEWAIT
andCURLMOPT_MULTIPLEX
on a HTTP/1.1 server would fail to execute requests concurrently until the second batch of requests were scheduled. However, the behavior seems to have gotten worse on the latestmaster
, and now results in a curl hang at 100% CPU usage.Code:
On 7.64.1, this will take ~10 seconds to run. On
master
, this hangs.The text was updated successfully, but these errors were encountered: