summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2010-08-19 12:20:18 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2010-08-19 12:20:18 +0100
commitdb5012819afb3287ddfdd0004f95b3e2db79edbc (patch)
tree67d065428c213ae8f7c1618271bc39b57a417eea
parentbcf0fe5ce23eba75acfed72719f65d753639e627 (diff)
downloadrabbitmq-server-git-db5012819afb3287ddfdd0004f95b3e2db79edbc.tar.gz
refactor
-rw-r--r--src/tcp_acceptor.erl8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/tcp_acceptor.erl b/src/tcp_acceptor.erl
index 0025a0481e..c9809ace61 100644
--- a/src/tcp_acceptor.erl
+++ b/src/tcp_acceptor.erl
@@ -55,6 +55,7 @@ handle_call(_Request, _From, State) ->
{noreply, State}.
handle_cast(accept, State) ->
+ ok = file_handle_cache:obtain(),
accept(State);
handle_cast(_Msg, State) ->
@@ -83,21 +84,23 @@ handle_info({inet_async, LSock, Ref, {ok, Sock}},
%% is drained.
gen_event:which_handlers(error_logger),
%% handle
- file_handle_cache:transfer(apply(M, F, A ++ [Sock]))
+ file_handle_cache:transfer(apply(M, F, A ++ [Sock])),
+ ok = file_handle_cache:obtain()
catch {inet_error, Reason} ->
gen_tcp:close(Sock),
- file_handle_cache:transfer(spawn(fun () -> ok end)),
error_logger:error_msg("unable to accept TCP connection: ~p~n",
[Reason])
end,
%% accept more
accept(State);
+
handle_info({inet_async, LSock, Ref, {error, closed}},
State=#state{sock=LSock, ref=Ref}) ->
%% It would be wrong to attempt to restart the acceptor when we
%% know this will fail.
{stop, normal, State};
+
handle_info(_Info, State) ->
{noreply, State}.
@@ -112,7 +115,6 @@ code_change(_OldVsn, State, _Extra) ->
inet_op(F) -> rabbit_misc:throw_on_error(inet_error, F).
accept(State = #state{sock=LSock}) ->
- ok = file_handle_cache:obtain(),
case prim_inet:async_accept(LSock, -1) of
{ok, Ref} -> {noreply, State#state{ref=Ref}};
Error -> {stop, {cannot_accept, Error}, State}