aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-08-12 19:05:08 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-08-12 19:05:08 +0900
commit9d16fa4abd2330e6c2941fc93b7185b10991822a (patch)
treeeee37b628d3facfad70cd01e6fc293daa05444d3 /lib
parent0bf620211bbba16e2caced6c2df3fd5e49929cc0 (diff)
downloadplum-9d16fa4abd2330e6c2941fc93b7185b10991822a.tar.gz
hpack: decoder: refactor
Diffstat (limited to 'lib')
-rw-r--r--lib/plum/hpack/decoder.rb13
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/plum/hpack/decoder.rb b/lib/plum/hpack/decoder.rb
index 01149e6..c298a0c 100644
--- a/lib/plum/hpack/decoder.rb
+++ b/lib/plum/hpack/decoder.rb
@@ -19,17 +19,16 @@ module Plum
private
def parse!(str)
first_byte = str.uint8
- if first_byte & 0b10000000 == 0b10000000
+ if first_byte >= 128 # 0b1XXXXXXX
parse_indexed!(str)
- elsif first_byte & 0b11000000 == 0b01000000
+ elsif first_byte >= 64 # 0b01XXXXXX
parse_indexing!(str)
- elsif first_byte & 0b11110000 == 0b00000000 || # without indexing
- first_byte & 0b11110000 == 0b00010000 # never indexing
- parse_no_indexing!(str)
- elsif first_byte & 0b11100000 == 0b00100000
+ elsif first_byte >= 32 # 0b001XXXXX
self.limit = read_integer!(str, 5)
nil
- end # all match
+ else # 0b0000XXXX (without indexing) or 0b0001XXXX (never indexing)
+ parse_no_indexing!(str)
+ end
end
def read_integer!(str, prefix_length)