From dee3081df142b2ff8a419233ebf4d589c8323444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Tue, 19 Jun 2018 17:50:30 +0200 Subject: [PATCH] Fix reset_stream in websocket using pre-rfc protocol --- src/xmpp_socket.erl | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/xmpp_socket.erl b/src/xmpp_socket.erl index e8a520caf..7c0500ce8 100644 --- a/src/xmpp_socket.erl +++ b/src/xmpp_socket.erl @@ -185,17 +185,21 @@ compress(#socket_state{receiver = undefined, end. reset_stream(#socket_state{xml_stream = XMLStream, - receiver = undefined, + receiver = Receiver, + sockmod = SockMod, socket = Socket, max_stanza_size = MaxStanzaSize} = SocketData) -> XMLStream1 = try fxml_stream:reset(XMLStream) catch error:_ -> close_stream(XMLStream), fxml_stream:new(self(), MaxStanzaSize) end, - SocketData#socket_state{xml_stream = XMLStream1}; -reset_stream(#socket_state{sockmod = SockMod, socket = Socket} = SocketData) -> - Socket1 = SockMod:reset_stream(Socket), - SocketData#socket_state{socket = Socket1}. + case Receiver of + undefined -> + SocketData#socket_state{xml_stream = XMLStream1}; + _ -> + Socket1 = SockMod:reset_stream(Socket), + SocketData#socket_state{xml_stream = XMLStream1, socket = Socket1} + end. -spec send_element(socket_state(), fxml:xmlel()) -> ok | {error, inet:posix()}. send_element(SocketData, El) when ?is_http_socket(SocketData) ->