aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cow_ws.erl12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/cow_ws.erl b/src/cow_ws.erl
index d5c40d0..08790ca 100644
--- a/src/cow_ws.erl
+++ b/src/cow_ws.erl
@@ -525,8 +525,12 @@ unmask(Data, MaskKey, UnmaskedLen) ->
MaskKey2 = (MaskKey bsl (Left * 8)) + (MaskKey bsr (Right * 8)),
mask(Data, MaskKey2, <<>>).
-mask(<<>>, _, Unmasked) ->
- Unmasked;
+mask(<< O1:32, O2:32, O3:32, O4:32, Rest/bits >>, MaskKey, Acc) ->
+ T1 = O1 bxor MaskKey,
+ T2 = O2 bxor MaskKey,
+ T3 = O3 bxor MaskKey,
+ T4 = O4 bxor MaskKey,
+ mask(Rest, MaskKey, << Acc/binary, T1:32, T2:32, T3:32, T4:32 >>);
mask(<< O:32, Rest/bits >>, MaskKey, Acc) ->
T = O bxor MaskKey,
mask(Rest, MaskKey, << Acc/binary, T:32 >>);
@@ -541,7 +545,9 @@ mask(<< O:16 >>, MaskKey, Acc) ->
mask(<< O:8 >>, MaskKey, Acc) ->
<< MaskKey2:8, _:24 >> = << MaskKey:32 >>,
T = O bxor MaskKey2,
- << Acc/binary, T:8 >>.
+ << Acc/binary, T:8 >>;
+mask(<<>>, _, Unmasked) ->
+ Unmasked.
inflate_frame(Data, Inflate, TakeOver, FragState, true)
when FragState =:= undefined; element(1, FragState) =:= fin ->