On Thu, Jul 20, 2017 at 12:54 AM, Lubo Astinov <[email protected]> wrote:
> Hello group,
>
> I have a system build on libuv and I'm having a peculiar problem. It's
> running a server and clients connect over tcp with it, but even though I
> have tcp_keepalive on the client when the server dies the client still
> thinks it's connected, there's no callback triggered etc.
>
> Essentially, I have a unit test that starts the server, starts a client,
> they exchange a handshake and a message then the server dies and the client
> tries to write to the stream again. The uv_write() call succeeds (?!) even
> though the server is most certainly dead at that point (I assert that the
> object is destroyed) .  The client enables tcp_keepalive but it doesn't
> cause any callback to be triggered when the server dies.
>
> I wonder if I'm missing something fundamentally here? How should I register
> a tcp client for a notification when the server dies? Whats the best way of
> monitoring the health of a connection?
>
> Thanks!
> Lubo

Keep-alive does the opposite of what you want: it keeps the connection
going long after the other end has stopped responding.

In general, there is no foolproof way to detect a peer that went away
without terminating the connection.  The best you can do are
heuristics like "at least one message every two minutes."

-- 
You received this message because you are subscribed to the Google Groups 
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.

Reply via email to