curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support from WolfSSL. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder himself.

How to debug cULR multi handle timeout caused by not writing to socket

From: Yongkang Huang via curl-library <>
Date: Tue, 26 Oct 2021 23:57:32 +0000


Following the thread I sent previously, now Iím working on an application that structured as the following way

  1. A thread holds a static curl multi handle and running as the event base
  2. When thereís a user request to do a HTTP call, a easy handle would be created and passing to the thread holding the curl multi handle.
  3. The curl multi thread will add the easy handle to the multi handle, and drive the IO with the event base.
  4. Once a request finished, return the easy handle to the thread dealing with user request
This model working fine when I do the request sequentially on a single thread with user traffic, but when thereís multiple request scheduled concurrently, thereís a wired bug that the write to a socket would stuck until a timeout finished (tcpdump shows a the tcp stuck on sending the application data instead of waiting for remote ack), usually itís either the connect timeout we set to connect to proxy, or the total timeout without the connect timeout. For example if the connect timeout is 10s, and total timeout is 30, a lot of request will finished in 10 second or 20 seconds, even waiting indefinitely until the total timeout passed.

Received on 2021-10-27