|
@@ -144,23 +144,27 @@ websocket_extensions(State=#state{extensions=Extensions}, Req=#{pid := Pid},
|
|
[{<<"permessage-deflate">>, Params}|Tail], RespHeader) ->
|
|
[{<<"permessage-deflate">>, Params}|Tail], RespHeader) ->
|
|
%% @todo Make deflate options configurable.
|
|
%% @todo Make deflate options configurable.
|
|
Opts = #{level => best_compression, mem_level => 8, strategy => default},
|
|
Opts = #{level => best_compression, mem_level => 8, strategy => default},
|
|
- case cow_ws:negotiate_permessage_deflate(Params, Extensions, Opts#{owner => Pid}) of
|
|
|
|
|
|
+ try cow_ws:negotiate_permessage_deflate(Params, Extensions, Opts#{owner => Pid}) of
|
|
{ok, RespExt, Extensions2} ->
|
|
{ok, RespExt, Extensions2} ->
|
|
websocket_extensions(State#state{extensions=Extensions2},
|
|
websocket_extensions(State#state{extensions=Extensions2},
|
|
Req, Tail, [<<", ">>, RespExt|RespHeader]);
|
|
Req, Tail, [<<", ">>, RespExt|RespHeader]);
|
|
ignore ->
|
|
ignore ->
|
|
websocket_extensions(State, Req, Tail, RespHeader)
|
|
websocket_extensions(State, Req, Tail, RespHeader)
|
|
|
|
+ catch exit:{error, incompatible_zlib_version, _} ->
|
|
|
|
+ websocket_extensions(State, Req, Tail, RespHeader)
|
|
end;
|
|
end;
|
|
websocket_extensions(State=#state{extensions=Extensions}, Req=#{pid := Pid},
|
|
websocket_extensions(State=#state{extensions=Extensions}, Req=#{pid := Pid},
|
|
[{<<"x-webkit-deflate-frame">>, Params}|Tail], RespHeader) ->
|
|
[{<<"x-webkit-deflate-frame">>, Params}|Tail], RespHeader) ->
|
|
%% @todo Make deflate options configurable.
|
|
%% @todo Make deflate options configurable.
|
|
Opts = #{level => best_compression, mem_level => 8, strategy => default},
|
|
Opts = #{level => best_compression, mem_level => 8, strategy => default},
|
|
- case cow_ws:negotiate_x_webkit_deflate_frame(Params, Extensions, Opts#{owner => Pid}) of
|
|
|
|
|
|
+ try cow_ws:negotiate_x_webkit_deflate_frame(Params, Extensions, Opts#{owner => Pid}) of
|
|
{ok, RespExt, Extensions2} ->
|
|
{ok, RespExt, Extensions2} ->
|
|
websocket_extensions(State#state{extensions=Extensions2},
|
|
websocket_extensions(State#state{extensions=Extensions2},
|
|
Req, Tail, [<<", ">>, RespExt|RespHeader]);
|
|
Req, Tail, [<<", ">>, RespExt|RespHeader]);
|
|
ignore ->
|
|
ignore ->
|
|
websocket_extensions(State, Req, Tail, RespHeader)
|
|
websocket_extensions(State, Req, Tail, RespHeader)
|
|
|
|
+ catch exit:{error, incompatible_zlib_version, _} ->
|
|
|
|
+ websocket_extensions(State, Req, Tail, RespHeader)
|
|
end;
|
|
end;
|
|
websocket_extensions(State, Req, [_|Tail], RespHeader) ->
|
|
websocket_extensions(State, Req, [_|Tail], RespHeader) ->
|
|
websocket_extensions(State, Req, Tail, RespHeader).
|
|
websocket_extensions(State, Req, Tail, RespHeader).
|