[erlang-questions] ssl_closed not always received

Loïc Hoguin essen@REDACTED
Mon Apr 11 11:24:37 CEST 2016


On 04/11/2016 10:23 AM, Roger Lipscombe wrote:
> On 10 April 2016 at 22:34, Khitai Pang <khitai.pang@REDACTED> wrote:
>> How to make sure that the server process always get ssl_closed when the
>> client process on a remote host quits?
>
> In the general case, you *can't*. This is due to the vagaries of TCP.
> To close a socket, the client will send a FIN packet to the server. If
> the network connection is lost (consider simply unplugging the cable),
> then the FIN will *never* arrive. If you need to know when the client
> has gone away, either implement some kind of application-level
> keepalive or enable TCP keepalive.

You need a bi-directional ping mechanism at the application level. TCP 
keepalive is not always enough.

-- 
Loïc Hoguin
http://ninenines.eu
Author of The Erlanger Playbook,
A book about software development using Erlang



More information about the erlang-questions mailing list