From 975f4c56d4d2b4fdecd4fa75364937c54c6dbf67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Fri, 14 Sep 2012 10:20:33 +0200 Subject: [PATCH] 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 --- src/web/ejabberd_http_ws.erl | 5 ++--- src/web/ejabberd_websocket.erl | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/web/ejabberd_http_ws.erl b/src/web/ejabberd_http_ws.erl index 28f9c4763..ec3bd4a09 100644 --- a/src/web/ejabberd_http_ws.erl +++ b/src/web/ejabberd_http_ws.erl @@ -143,13 +143,12 @@ handle_sync_event(close, _From, _StateName, StateData) -> handle_info(closed, _StateName, StateData) -> {stop, normal, StateData}; handle_info({browser, Packet}, StateName, StateData) -> - NPacket = unicode:characters_to_binary(Packet, latin1), NewState = case StateData#state.waiting_input of false -> - Input = <<(StateData#state.input)/binary, NPacket/binary>>, + Input = <<(StateData#state.input)/binary, Packet/binary>>, StateData#state{input = Input}; Receiver -> - Receiver ! {tcp, StateData#state.socket, NPacket}, + Receiver ! {tcp, StateData#state.socket, Packet}, cancel_timer(StateData#state.timer), Timer = erlang:start_timer(StateData#state.timeout, self(), []), diff --git a/src/web/ejabberd_websocket.erl b/src/web/ejabberd_websocket.erl index cfcec4f63..5d1d2fbac 100644 --- a/src/web/ejabberd_websocket.erl +++ b/src/web/ejabberd_websocket.erl @@ -360,7 +360,7 @@ process_hixie_68({_, L}, <<255, T/binary>>) -> {L2, Recv, Send} = process_hixie_68({false, <<>>}, T), {L2, [L | Recv], Send}; process_hixie_68({true, L}, <>) -> - process_hixie_68({true, <>}, T). + process_hixie_68({true, <>}, T). -record(hybi_8_state, {mask = none, offset = 0, left, final_frame = true,