From 4819738e8f039bf08bfb9867ad279ef8a94b9b5d Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 14 Feb 2012 17:03:08 +1000 Subject: [PATCH] Receiver should not generate an exception --- src/ejabberd_receiver.erl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl index 702dd108f..3a4e4aafb 100644 --- a/src/ejabberd_receiver.erl +++ b/src/ejabberd_receiver.erl @@ -84,16 +84,16 @@ change_shaper(Pid, Shaper) -> gen_server:cast(Pid, {change_shaper, Shaper}). reset_stream(Pid) -> - gen_server:call(Pid, reset_stream). + do_call(Pid, reset_stream). starttls(Pid, TLSSocket) -> - gen_server:call(Pid, {starttls, TLSSocket}). + do_call(Pid, {starttls, TLSSocket}). compress(Pid, ZlibSocket) -> - gen_server:call(Pid, {compress, ZlibSocket}). + do_call(Pid, {compress, ZlibSocket}). become_controller(Pid, C2SPid) -> - gen_server:call(Pid, {become_controller, C2SPid}). + do_call(Pid, {become_controller, C2SPid}). close(Pid) -> gen_server:cast(Pid, close). @@ -345,3 +345,11 @@ close_stream(undefined) -> ok; close_stream(XMLStreamState) -> xml_stream:close(XMLStreamState). + +do_call(Pid, Msg) -> + case catch gen_server:call(Pid, Msg) of + {'EXIT', Why} -> + {error, Why}; + Res -> + Res + end.