mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-15 04:30:25 +00:00
Remove usage of the inflate buffer
This commit is contained in:
parent
39caf34fe3
commit
4edef3c45c
1 changed files with 9 additions and 12 deletions
|
@ -57,9 +57,8 @@
|
||||||
frag_state = undefined :: frag_state(),
|
frag_state = undefined :: frag_state(),
|
||||||
utf8_state = <<>> :: binary(),
|
utf8_state = <<>> :: binary(),
|
||||||
deflate_frame = false :: boolean(),
|
deflate_frame = false :: boolean(),
|
||||||
inflate_state :: any(),
|
inflate_state :: undefined | port(),
|
||||||
inflate_buffer = <<>> :: binary(),
|
deflate_state :: undefined | port()
|
||||||
deflate_state :: any()
|
|
||||||
}).
|
}).
|
||||||
|
|
||||||
%% @doc Upgrade an HTTP request to the Websocket protocol.
|
%% @doc Upgrade an HTTP request to the Websocket protocol.
|
||||||
|
@ -121,7 +120,6 @@ websocket_extensions(State, Req) ->
|
||||||
{ok, State#state{
|
{ok, State#state{
|
||||||
deflate_frame = true,
|
deflate_frame = true,
|
||||||
inflate_state = Inflate,
|
inflate_state = Inflate,
|
||||||
inflate_buffer = <<>>,
|
|
||||||
deflate_state = Deflate
|
deflate_state = Deflate
|
||||||
}, Req2};
|
}, Req2};
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -450,14 +448,13 @@ websocket_inflate_frame(Data, << Rsv1:1, _:2 >>, _,
|
||||||
#state{deflate_frame = DeflateFrame} = State)
|
#state{deflate_frame = DeflateFrame} = State)
|
||||||
when DeflateFrame =:= false orelse Rsv1 =:= 0 ->
|
when DeflateFrame =:= false orelse Rsv1 =:= 0 ->
|
||||||
{Data, State};
|
{Data, State};
|
||||||
websocket_inflate_frame(Data, << 1:1, _:2 >>, false,
|
websocket_inflate_frame(Data, << 1:1, _:2 >>, false, State) ->
|
||||||
#state{inflate_buffer = Buffer} = State) ->
|
Result = zlib:inflate(State#state.inflate_state, Data),
|
||||||
{<<>>, State#state{inflate_buffer = << Buffer/binary, Data/binary >>}};
|
{iolist_to_binary(Result), State};
|
||||||
websocket_inflate_frame(Data, << 1:1, _:2 >>, true,
|
websocket_inflate_frame(Data, << 1:1, _:2 >>, true, State) ->
|
||||||
#state{inflate_state = Inflate, inflate_buffer = Buffer} = State) ->
|
Result = zlib:inflate(State#state.inflate_state,
|
||||||
Deflated = << Buffer/binary, Data/binary, 0:8, 0:8, 255:8, 255:8 >>,
|
<< Data/binary, 0:8, 0:8, 255:8, 255:8 >>),
|
||||||
Result = zlib:inflate(Inflate, Deflated),
|
{iolist_to_binary(Result), State}.
|
||||||
{iolist_to_binary(Result), State#state{inflate_buffer = <<>>}}.
|
|
||||||
|
|
||||||
-spec websocket_unmask(B, mask_key(), B) -> B when B::binary().
|
-spec websocket_unmask(B, mask_key(), B) -> B when B::binary().
|
||||||
websocket_unmask(<<>>, _, Unmasked) ->
|
websocket_unmask(<<>>, _, Unmasked) ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue