mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 04:10:24 +00:00
Add test to ensure max_frame_size works for decompressed data
This commit is contained in:
parent
c35c754f5a
commit
091d1e6e67
2 changed files with 20 additions and 1 deletions
|
@ -203,6 +203,25 @@ do_ws_version(Socket) ->
|
|||
{error, closed} = gen_tcp:recv(Socket, 0, 6000),
|
||||
ok.
|
||||
|
||||
ws_deflate_max_frame_size_close(Config) ->
|
||||
doc("Server closes connection when decompressed frame size exceeds max_frame_size option"),
|
||||
%% max_frame_size is set to 8 bytes in ws_max_frame_size.
|
||||
{ok, Socket, Headers} = do_handshake("/ws_max_frame_size",
|
||||
"Sec-WebSocket-Extensions: permessage-deflate\r\n", Config),
|
||||
{_, "permessage-deflate"} = lists:keyfind("sec-websocket-extensions", 1, Headers),
|
||||
Mask = 16#11223344,
|
||||
Z = zlib:open(),
|
||||
zlib:deflateInit(Z, best_compression, deflated, -15, 8, default),
|
||||
CompressedData0 = iolist_to_binary(zlib:deflate(Z, <<0:800>>, sync)),
|
||||
CompressedData = binary:part(CompressedData0, 0, byte_size(CompressedData0) - 4),
|
||||
MaskedData = do_mask(CompressedData, Mask, <<>>),
|
||||
Len = byte_size(MaskedData),
|
||||
true = Len < 8,
|
||||
ok = gen_tcp:send(Socket, << 1:1, 1:1, 0:2, 1:4, 1:1, Len:7, Mask:32, MaskedData/binary >>),
|
||||
{ok, << 1:1, 0:3, 8:4, 0:1, 2:7, 1009:16 >>} = gen_tcp:recv(Socket, 0, 6000),
|
||||
{error, closed} = gen_tcp:recv(Socket, 0, 6000),
|
||||
ok.
|
||||
|
||||
ws_deflate_opts_client_context_takeover(Config) ->
|
||||
doc("Handler is configured with client context takeover enabled."),
|
||||
{ok, _, Headers1} = do_handshake("/ws_deflate_opts?client_context_takeover",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
-export([websocket_info/2]).
|
||||
|
||||
init(Req, State) ->
|
||||
{cowboy_websocket, Req, State, #{max_frame_size => 8}}.
|
||||
{cowboy_websocket, Req, State, #{max_frame_size => 8, compress => true}}.
|
||||
|
||||
websocket_handle({text, Data}, State) ->
|
||||
{[{text, Data}], State};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue