aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Chmielowski <pchmielowski@process-one.net>2018-06-19 17:50:30 +0200
committerPaweł Chmielowski <pchmielowski@process-one.net>2018-06-19 17:51:09 +0200
commitdee3081df142b2ff8a419233ebf4d589c8323444 (patch)
treee5331813c1a307ebe02c968a34da0195ecaee317
parentRender roomname, allowinvites and allowpm in room disco#info (diff)
Fix reset_stream in websocket using pre-rfc protocol
-rw-r--r--src/xmpp_socket.erl14
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) ->