summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2012-02-14 17:03:08 +1000
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2012-02-14 17:03:08 +1000
commit4819738e8f039bf08bfb9867ad279ef8a94b9b5d (patch)
tree18b638c6a2ab141ef426a0489533b1858608a1ac
parentFix the documentation about default value of captcha_cmd option (diff)
Receiver should not generate an exception
-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.