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.
