Browse Source

Fix crash when using IOlists with some Websocket frames

Backported from Cowlib's patch from Rob Ashton <robashton@codeofrob.com>.
Loïc Hoguin 9 years ago
parent
commit
04eadae381
1 changed files with 1 additions and 1 deletions
  1. 1 1
      src/cowboy_websocket.erl

+ 1 - 1
src/cowboy_websocket.erl

@@ -570,7 +570,7 @@ websocket_dispatch(State, Req, HandlerState, _RemainingData, 8,
 %% Ping control frame. Send a pong back and forward the ping to the handler.
 %% Ping control frame. Send a pong back and forward the ping to the handler.
 websocket_dispatch(State=#state{socket=Socket, transport=Transport},
 websocket_dispatch(State=#state{socket=Socket, transport=Transport},
 		Req, HandlerState, RemainingData, 9, Payload) ->
 		Req, HandlerState, RemainingData, 9, Payload) ->
-	Len = payload_length_to_binary(byte_size(Payload)),
+	Len = payload_length_to_binary(iolist_size(Payload)),
 	Transport:send(Socket, << 1:1, 0:3, 10:4, 0:1, Len/bits, Payload/binary >>),
 	Transport:send(Socket, << 1:1, 0:3, 10:4, 0:1, Len/bits, Payload/binary >>),
 	handler_call(State, Req, HandlerState, RemainingData,
 	handler_call(State, Req, HandlerState, RemainingData,
 		websocket_handle, {ping, Payload}, fun websocket_data/4);
 		websocket_handle, {ping, Payload}, fun websocket_data/4);