Fix reset_stream in websocket using pre-rfc protocol
This commit is contained in:
parent
6acac7c93f
commit
dee3081df1
|
@ -185,17 +185,21 @@ compress(#socket_state{receiver = undefined,
|
||||||
end.
|
end.
|
||||||
|
|
||||||
reset_stream(#socket_state{xml_stream = XMLStream,
|
reset_stream(#socket_state{xml_stream = XMLStream,
|
||||||
receiver = undefined,
|
receiver = Receiver,
|
||||||
|
sockmod = SockMod, socket = Socket,
|
||||||
max_stanza_size = MaxStanzaSize} = SocketData) ->
|
max_stanza_size = MaxStanzaSize} = SocketData) ->
|
||||||
XMLStream1 = try fxml_stream:reset(XMLStream)
|
XMLStream1 = try fxml_stream:reset(XMLStream)
|
||||||
catch error:_ ->
|
catch error:_ ->
|
||||||
close_stream(XMLStream),
|
close_stream(XMLStream),
|
||||||
fxml_stream:new(self(), MaxStanzaSize)
|
fxml_stream:new(self(), MaxStanzaSize)
|
||||||
end,
|
end,
|
||||||
SocketData#socket_state{xml_stream = XMLStream1};
|
case Receiver of
|
||||||
reset_stream(#socket_state{sockmod = SockMod, socket = Socket} = SocketData) ->
|
undefined ->
|
||||||
Socket1 = SockMod:reset_stream(Socket),
|
SocketData#socket_state{xml_stream = XMLStream1};
|
||||||
SocketData#socket_state{socket = Socket1}.
|
_ ->
|
||||||
|
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()}.
|
-spec send_element(socket_state(), fxml:xmlel()) -> ok | {error, inet:posix()}.
|
||||||
send_element(SocketData, El) when ?is_http_socket(SocketData) ->
|
send_element(SocketData, El) when ?is_http_socket(SocketData) ->
|
||||||
|
|
Loading…
Reference in New Issue