aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2017-06-23 17:19:28 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2017-06-23 17:19:37 +0200
commit70606d7f1ae6b74142f9b577a25f4434aa7f3df8 (patch)
treed161880df94d6441cc22f8fb506a9b9a99e7ecf7 /src
parentMore explicit bosh configuration handler (diff)
Catch exception that may happen when sending data over websocket
This fixes #1667
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_http_ws.erl10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ejabberd_http_ws.erl b/src/ejabberd_http_ws.erl
index 18ba071dd..f4a73cc39 100644
--- a/src/ejabberd_http_ws.erl
+++ b/src/ejabberd_http_ws.erl
@@ -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