From 70606d7f1ae6b74142f9b577a25f4434aa7f3df8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Fri, 23 Jun 2017 17:19:28 +0200 Subject: Catch exception that may happen when sending data over websocket This fixes #1667 --- src/ejabberd_http_ws.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') 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 -- cgit v1.2.3