From e5aac80cb414494061a93683885a80b42e28e660 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Thu, 2 Mar 2017 16:02:44 +0300 Subject: [PATCH] Better handle errors in ejabberd_receiver calls --- src/ejabberd_receiver.erl | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl index 11677b7ba..5ec26171d 100644 --- a/src/ejabberd_receiver.erl +++ b/src/ejabberd_receiver.erl @@ -157,8 +157,8 @@ handle_call({compress, Data}, _From, {ok, ZlibData} -> {reply, {ok, ZlibSocket}, process_data(ZlibData, NewState), ?HIBERNATE_TIMEOUT}; - {error, _Reason} -> - {stop, normal, ok, NewState} + {error, _} = Err -> + {stop, normal, Err, NewState} end; handle_call(reset_stream, _From, State) -> NewState = reset_parser(State), @@ -338,7 +338,10 @@ do_send(State, Data) -> (State#state.sock_mod):send(State#state.socket, Data). do_call(Pid, Msg) -> - case catch ?GEN_SERVER:call(Pid, Msg) of - {'EXIT', Why} -> {error, Why}; - Res -> Res + try ?GEN_SERVER:call(Pid, Msg) of + Res -> Res + catch _:{timeout, _} -> + {error, timeout}; + _:_ -> + {error, einval} end.