From cb5dda33d986680b2778cf7afaa502428234088b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 29 Dec 2019 12:14:47 +0100 Subject: HPACK: Fix inline integer decodings There's no shift to be done for the first value. --- src/cow_hpack.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cow_hpack.erl b/src/cow_hpack.erl index 882e670..4c27a75 100644 --- a/src/cow_hpack.erl +++ b/src/cow_hpack.erl @@ -123,7 +123,7 @@ decode(<< 0:3, 1:1, Rest/bits >>, State, Acc) -> %% We do the integer decoding inline where appropriate, falling %% back to dec_big_int for larger values. dec_indexed(<<2#1111111:7, 0:1, Int:7, Rest/bits>>, State, Acc) -> - {Name, Value} = table_get(127 + Int bsl 7, State), + {Name, Value} = table_get(127 + Int, State), decode(Rest, State, [{Name, Value}|Acc]); dec_indexed(<<2#1111111:7, Rest0/bits>>, State, Acc) -> {Index, Rest} = dec_big_int(Rest0, 127, 0), @@ -142,7 +142,7 @@ dec_lit_index_new_name(Rest, State, Acc) -> %% We do the integer decoding inline where appropriate, falling %% back to dec_big_int for larger values. dec_lit_index_indexed_name(<<2#111111:6, 0:1, Int:7, Rest/bits>>, State, Acc) -> - Name = table_get_name(63 + Int bsl 7, State), + Name = table_get_name(63 + Int, State), dec_lit_index(Rest, State, Acc, Name); dec_lit_index_indexed_name(<<2#111111:6, Rest0/bits>>, State, Acc) -> {Index, Rest} = dec_big_int(Rest0, 63, 0), @@ -166,7 +166,7 @@ dec_lit_no_index_new_name(Rest, State, Acc) -> %% We do the integer decoding inline where appropriate, falling %% back to dec_big_int for larger values. dec_lit_no_index_indexed_name(<<2#1111:4, 0:1, Int:7, Rest/bits>>, State, Acc) -> - Name = table_get_name(15 + Int bsl 7, State), + Name = table_get_name(15 + Int, State), dec_lit_no_index(Rest, State, Acc, Name); dec_lit_no_index_indexed_name(<<2#1111:4, Rest0/bits>>, State, Acc) -> {Index, Rest} = dec_big_int(Rest0, 15, 0), -- cgit v1.2.3