gen_tcp:recv() and client_machine_crash

HP Wei hp@REDACTED
Mon Jun 26 21:15:25 CEST 2006


I have a server (written in Erlang) which handles
clients' request(s) through tcp_socket by
the following piece of psudo-code:

handle_request(Sock) ->
   case gen_tcp:recv(Sock, 0) of
     {ok, Bin} ->
         handle_Bin(...);
     {error, Reason} ->
         handle_exit(...)
   end.

[ Note: The client code is written in python. ]

I want the handle_exit() to handle three abnormal-exit situations
that may occur on the client side.
(1) the client's code gets Control_C exit;
(2) the client's code gets killed by 'kill -9 pid'
    [ under UNIX ];
(3) the machine that the client is running on
    crashes !

For (1) and (2), the part 'handle_exit()' in the
above snippet gets executed as expected.

However, we had a client_machine_crash this morning
but the handle_exit(..) did not seem to get executed.

Questions:
   Is it supposed to be executed ?
   If yes, I will check the other part of the server-code.
   If no, then what is the proper way to detect a
   machine crash ??

thanks
HP




More information about the erlang-questions mailing list