[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