cURL / Mailing Lists / curl-library / Single Mail

curl-library

Re: Issue with CURL detecting network outage

From: Jogeshwar Karthik Akundi <ajkarthik_at_gmail.com>
Date: Thu, 17 Dec 2009 11:46:29 +0530

Hi Daniel,

On Wed, Dec 16, 2009 at 9:25 PM, Daniel Stenberg <daniel_at_haxx.se> wrote:

> On Wed, 16 Dec 2009, Jogeshwar Karthik Akundi wrote:
>
> Client uses CURL to connect to server using Connect_Only option.
>> While the connection is running, if network cable is removed, the
>> disconnect
>> is not being detected.
>> I use select() to verify readibility/writability on the socket and use
>> curl_easy_read/write to receive/send data.
>> when using the socket descriptor in read/write sets, select doesn't return
>> FD_ISSET. it only times out.
>>
>
> ...
>
>
> so I tried to skip select and force sending data to CURL if buffers are
>> available. Then curl_easy_send returns success. It is able to send packets
>> of 20 bytes (verified only a few packets though) without errors, while I
>> hold the network cable in my hand.
>>
>
> That sounds odd, but maybe you should consider having your heartbeat system
> require a response within a certain time anyway?

Actually this is a one way communication with server we use. Server does
send requests but I cannot impose any such rules. If the client doesn't send
data for a minute, server disconnects the client, so client send dummy
packets to keep the connection alive. That is the heartbeat I was referring
to. I hoped that at least this send would fail and we can have the
disconnected notification in hand.

>
>
> In the same case, we get an error immediately on windows. This issue is
>> OSX specific (atleast for me here).
>>
>
> Perhaps it is, but I'm not aware of any such OSX peculiarities. What does
> (the equivalent of) strace show?
>

Please find the strace logs attached.
Being on OSX, I used dtruss to get the output. The entire output is taken
while the plug is pulled out.
you can search for "byets" in the file and you shall find a couple of lines.
they are logged after the curl_easy_send returns success.

>
>
> --
>
> / daniel.haxx.se
> -------------------------------------------------------------------
> List admin: http://cool.haxx.se/list/listinfo/curl-library
> Etiquette: http://curl.haxx.se/mail/etiquette.html
>

-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette: http://curl.haxx.se/mail/etiquette.html

Received on 2009-12-17