]> granicus.if.org Git - ejabberd/commitdiff
Receiver should not generate an exception
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 14 Feb 2012 07:03:08 +0000 (17:03 +1000)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 14 Feb 2012 07:03:08 +0000 (17:03 +1000)
src/ejabberd_receiver.erl

index 702dd108fb4a1e41ee73fc84d62a79d075c072a2..3a4e4aafbe2eb8a95b9d1c1ef1c49c8486eb8cdf 100644 (file)
@@ -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.