aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-02 16:02:44 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-03-02 16:02:44 +0300
commite5aac80cb414494061a93683885a80b42e28e660 (patch)
tree3130c31f8098ae3ad69992be64f3b5ecee44cf74
parentFix previous commit (diff)
Better handle errors in ejabberd_receiver calls
-rw-r--r--src/ejabberd_receiver.erl13
1 files 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.