diff --git a/src/ejabberd_http_ws.erl b/src/ejabberd_http_ws.erl index ab83fc50b..0808ffd97 100644 --- a/src/ejabberd_http_ws.erl +++ b/src/ejabberd_http_ws.erl @@ -138,7 +138,9 @@ handle_event({activate, From}, StateName, StateData) -> StateData#state{waiting_input = From}}; Input -> Receiver = From, - Receiver ! {tcp, StateData#state.socket, Input}, + lists:foreach(fun(I) -> + Receiver ! {tcp, StateData#state.socket, I} + end, Input), {next_state, StateName, StateData#state{input = [], waiting_input = false, last_receiver = Receiver}} @@ -209,7 +211,7 @@ handle_info({received, Packet}, StateName, StateDataI) -> {StateData, Parsed} = parse(StateDataI, Packet), SD = case StateData#state.waiting_input of false -> - Input = StateData#state.input ++ Parsed, + Input = StateData#state.input ++ if is_binary(Parsed) -> [Parsed]; true -> Parsed end, StateData#state{input = Input}; Receiver -> Receiver ! {tcp, StateData#state.socket, Parsed},