Просмотр исходного кода

Support uncompressed Websocket frames when deflate is enabled

Loïc Hoguin 6 лет назад
Родитель
Сommit
db7f61c0c2
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      src/cow_ws.erl

+ 8 - 4
src/cow_ws.erl

@@ -645,11 +645,13 @@ frame({pong, Payload}, _) ->
 	true = Len =< 125,
 	[<< 1:1, 0:3, 10:4, 0:1, Len:7 >>, Payload];
 %% Data frames, deflate-frame extension.
-frame({text, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver}) ->
+frame({text, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver})
+		when Deflate =/= false ->
 	Payload2 = deflate_frame(Payload, Deflate, TakeOver),
 	Len = payload_length(Payload2),
 	[<< 1:1, 1:1, 0:2, 1:4, 0:1, Len/bits >>, Payload2];
-frame({binary, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver}) ->
+frame({binary, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver})
+		when Deflate =/= false ->
 	Payload2 = deflate_frame(Payload, Deflate, TakeOver),
 	Len = payload_length(Payload2),
 	[<< 1:1, 1:1, 0:2, 2:4, 0:1, Len/bits >>, Payload2];
@@ -691,12 +693,14 @@ masked_frame({pong, Payload}, _) ->
 	MaskKeyBin = << MaskKey:32 >> = crypto:strong_rand_bytes(4),
 	[<< 1:1, 0:3, 10:4, 1:1, Len:7 >>, MaskKeyBin, mask(iolist_to_binary(Payload), MaskKey, <<>>)];
 %% Data frames, deflate-frame extension.
-masked_frame({text, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver}) ->
+masked_frame({text, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver})
+		when Deflate =/= false ->
 	MaskKeyBin = << MaskKey:32 >> = crypto:strong_rand_bytes(4),
 	Payload2 = mask(deflate_frame(Payload, Deflate, TakeOver), MaskKey, <<>>),
 	Len = payload_length(Payload2),
 	[<< 1:1, 1:1, 0:2, 1:4, 1:1, Len/bits >>, MaskKeyBin, Payload2];
-masked_frame({binary, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver}) ->
+masked_frame({binary, Payload}, #{deflate := Deflate, deflate_takeover := TakeOver})
+		when Deflate =/= false ->
 	MaskKeyBin = << MaskKey:32 >> = crypto:strong_rand_bytes(4),
 	Payload2 = mask(deflate_frame(Payload, Deflate, TakeOver), MaskKey, <<>>),
 	Len = payload_length(Payload2),