summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_receiver.erl16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl
index 702dd108..3a4e4aaf 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.