curl / Mailing Lists / curl-library / Single Mail

curl-library

Re: libCurl 7.61.1: no response message received indicating dead connection

From: Ray Satiro via curl-library <curl-library_at_cool.haxx.se>
Date: Fri, 12 Oct 2018 14:02:18 -0400

On 10/9/2018 9:40 AM, Bernd Mueller (bermuell) via curl-library wrote:
> I’m reaching out to you as we saw a functional change in libCurl which might not have been intended or to get advice how to cope with it on application side.
>
> When moving from libCurl version 7.61.0 to 7.61.1 a response message is not received anymore
> in case of ‘dead connection’ (‘stream_error’ in multi.c). Where as we
> received in 7.61.0 a response message with error code 7="Couldn't connect to server”.
>
> It looks like that the reason is the introduction of the state function ‘Curl_init_completed’ for state CURLM_STATE_COMPLETED which stops all the timers by calling ‘Curl_expire_clear’.
>
> In the above mentioned error case
> * “Completed” state is the next state
> * as a result, all timers are stopped (which was not the case in v7.61.0)
> * response message which is created afterwards (https://github.com/curl/curl/blob/432eb5f5c254ee8383b2522ce597c9219877923e/lib/multi.c#L2133,
> with error code indicating the ’timed out’) is never received by the application because of the stopped timers...I assume.
>
> I tried not stopping/clearing the timers in that ‘error’ situation and then we receive on application side the response message with the expected error code in ‘msg->extmsg.data.result’.
>
> Is there a change required on application side to get informed about the failing attempt to send the message in that situation?
>
> We’re using
> - libCurl (7.61.1).
> - multi interface to connect to a server using HTTPS.

To be clear are you saying that libcurl will no longer indicate when it
can't connect to the server? The only commit I can find that is related
to what you are talking about is
https://github.com/curl/curl/commit/acefdd0 but I don't see how it could
cause this issue. My understanding is libcurl should call
Curl_expire_clear. Are you able to reproduce consistently and can you
confirm that commit is the issue by testing it and its parent?

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2018-10-12