diff options
author | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-06-19 17:50:30 +0200 |
---|---|---|
committer | Paweł Chmielowski <pchmielowski@process-one.net> | 2018-06-19 17:51:09 +0200 |
commit | dee3081df142b2ff8a419233ebf4d589c8323444 (patch) | |
tree | e5331813c1a307ebe02c968a34da0195ecaee317 | |
parent | Render roomname, allowinvites and allowpm in room disco#info (diff) |
Fix reset_stream in websocket using pre-rfc protocol
-rw-r--r-- | src/xmpp_socket.erl | 14 |
1 files 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) -> |