[Kai-commits] SF.net SVN: kai:[111] branches/cooldaemon_count_current_tcp_connections/src /kai_tcp_
Kai is a distributed key-value datastore
Status: Beta
Brought to you by:
takemaru
From: <coo...@us...> - 2009-02-24 14:24:11
|
Revision: 111 http://kai.svn.sourceforge.net/kai/?rev=111&view=rev Author: cooldaemon Date: 2009-02-24 14:24:03 +0000 (Tue, 24 Feb 2009) Log Message: ----------- It was fixed to close a TCP socket when receiving tcp_closed event. Modified Paths: -------------- branches/cooldaemon_count_current_tcp_connections/src/kai_tcp_server.erl Modified: branches/cooldaemon_count_current_tcp_connections/src/kai_tcp_server.erl =================================================================== --- branches/cooldaemon_count_current_tcp_connections/src/kai_tcp_server.erl 2009-02-17 01:25:21 UTC (rev 110) +++ branches/cooldaemon_count_current_tcp_connections/src/kai_tcp_server.erl 2009-02-24 14:24:03 UTC (rev 111) @@ -117,7 +117,8 @@ acceptor_loop( proplists:get_value(active, Option#tcp_server_option.listen), Socket, State, Mod, Option - ); + ), + gen_tcp:close(Socket); {error, Reason} -> ?warning(io_lib:format("acceptor_accept(~p) ~p", [Mod, {error, Reason}])), timer:sleep(Option#tcp_server_option.accept_error_sleep_time) @@ -136,7 +137,7 @@ tcp_closed; {error, Reason} -> ?warning(io_lib:format("acceptor_loop(~p) ~p", [Mod, {error, Reason}])), - exit({error, Reason}) + error end; acceptor_loop(true, _DummySocket, State, Mod, Option) -> @@ -146,9 +147,10 @@ {tcp_closed, _Socket} -> tcp_closed; Error -> - exit({error, Error}) + ?warning(io_lib:format("acceptor_loop(~p) ~p", [Mod, {error, Error}])), + error after Option#tcp_server_option.recv_timeout -> - exit({error, tcp_timeout}) + tcp_timeout end. call_mod(Active, Socket, Data, State, Mod, Option) -> @@ -159,11 +161,10 @@ {noreply, State} -> acceptor_loop(Active, Socket, State, Mod, Option); {close, State} -> - gen_tcp:close(Socket); + tcp_closed; {close, DataToSend, State} -> - gen_tcp:send(Socket, DataToSend), - gen_tcp:close(Socket); - _Error -> - gen_tcp:close(Socket) + gen_tcp:send(Socket, DataToSend); + Other -> + ?warning(io_lib:format("call_mod(~p) ~p", [Mod, {unexpected_result, Other}])) end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |