I found out today that the current version of
curl has a weird connection timeout behavior.
I found a record of the behavior dated back to at least 2014. The behavior I am referring to is how curl allocates connection timeout.
When I set
--connection-timeout option, I would expect it to apply the timeout to each server, but curl instead allocate the timeout reverse-exponentially. So if you set the timeout to 3 seconds, the first server gets 1.5s budget, the second one gets 750ms, the third 375ms, and so on. You can read the rationale by the author himself here.
I wonder if there is an option to do what I expected, setting connection timeouts for each server.
It doesn't need to be an option for
curl itself; I will be happy if I can do that in
libcurl would do.