]> granicus.if.org Git - ejabberd/commitdiff
Catch exception that may happen when sending data over websocket
authorPaweł Chmielowski <pchmielowski@process-one.net>
Fri, 23 Jun 2017 15:19:28 +0000 (17:19 +0200)
committerPaweł Chmielowski <pchmielowski@process-one.net>
Fri, 23 Jun 2017 15:19:37 +0000 (17:19 +0200)
This fixes #1667

src/ejabberd_http_ws.erl

index 18ba071dd324604e5a5f4d4ae3870ddc56d6e80c..f4a73cc39974cecf52202b2f39247ce67a678ca6 100644 (file)
@@ -81,8 +81,14 @@ start_link(WS) ->
     gen_fsm:start_link(?MODULE, [WS], ?FSMOPTS).
 
 send_xml({http_ws, FsmRef, _IP}, Packet) ->
-    gen_fsm:sync_send_all_state_event(FsmRef,
-                                     {send_xml, Packet}).
+    case catch gen_fsm:sync_send_all_state_event(FsmRef,
+                                                   {send_xml, Packet},
+                                                   15000)
+    of
+       {'EXIT', {timeout, _}} -> {error, timeout};
+       {'EXIT', _} -> {error, einval};
+       Res -> Res
+    end.
 
 setopts({http_ws, FsmRef, _IP}, Opts) ->
     case lists:member({active, once}, Opts) of