diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-03-02 16:02:44 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-03-02 16:02:44 +0300 |
commit | e5aac80cb414494061a93683885a80b42e28e660 (patch) | |
tree | 3130c31f8098ae3ad69992be64f3b5ecee44cf74 | |
parent | Fix previous commit (diff) |
Better handle errors in ejabberd_receiver calls
-rw-r--r-- | src/ejabberd_receiver.erl | 13 |
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. |