mirror of
https://github.com/processone/ejabberd.git
synced 2024-07-02 23:06:21 +02:00
Don't try to decode utf-8 codepoints in ej_websocket only to convert it back to utf-8 in ej_http_ws
Additionally that conversion code was wrong sometimes and lead to loosing some bits of information. This fixes EJABS-1875
This commit is contained in:
parent
8eef2f02bf
commit
975f4c56d4
|
@ -143,13 +143,12 @@ handle_sync_event(close, _From, _StateName, StateData) ->
|
||||||
handle_info(closed, _StateName, StateData) ->
|
handle_info(closed, _StateName, StateData) ->
|
||||||
{stop, normal, StateData};
|
{stop, normal, StateData};
|
||||||
handle_info({browser, Packet}, StateName, StateData) ->
|
handle_info({browser, Packet}, StateName, StateData) ->
|
||||||
NPacket = unicode:characters_to_binary(Packet, latin1),
|
|
||||||
NewState = case StateData#state.waiting_input of
|
NewState = case StateData#state.waiting_input of
|
||||||
false ->
|
false ->
|
||||||
Input = <<(StateData#state.input)/binary, NPacket/binary>>,
|
Input = <<(StateData#state.input)/binary, Packet/binary>>,
|
||||||
StateData#state{input = Input};
|
StateData#state{input = Input};
|
||||||
Receiver ->
|
Receiver ->
|
||||||
Receiver ! {tcp, StateData#state.socket, NPacket},
|
Receiver ! {tcp, StateData#state.socket, Packet},
|
||||||
cancel_timer(StateData#state.timer),
|
cancel_timer(StateData#state.timer),
|
||||||
Timer = erlang:start_timer(StateData#state.timeout,
|
Timer = erlang:start_timer(StateData#state.timeout,
|
||||||
self(), []),
|
self(), []),
|
||||||
|
|
|
@ -360,7 +360,7 @@ process_hixie_68({_, L}, <<255, T/binary>>) ->
|
||||||
{L2, Recv, Send} = process_hixie_68({false, <<>>}, T),
|
{L2, Recv, Send} = process_hixie_68({false, <<>>}, T),
|
||||||
{L2, [L | Recv], Send};
|
{L2, [L | Recv], Send};
|
||||||
process_hixie_68({true, L}, <<H/utf8, T/binary>>) ->
|
process_hixie_68({true, L}, <<H/utf8, T/binary>>) ->
|
||||||
process_hixie_68({true, <<L/binary, H>>}, T).
|
process_hixie_68({true, <<L/binary, H/utf8>>}, T).
|
||||||
|
|
||||||
-record(hybi_8_state,
|
-record(hybi_8_state,
|
||||||
{mask = none, offset = 0, left, final_frame = true,
|
{mask = none, offset = 0, left, final_frame = true,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user