diff options
Diffstat (limited to 'lib/plum')
-rw-r--r-- | lib/plum/frame_utils.rb | 14 | ||||
-rw-r--r-- | lib/plum/stream_helper.rb | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/lib/plum/frame_utils.rb b/lib/plum/frame_utils.rb index c29b4a7..0093f89 100644 --- a/lib/plum/frame_utils.rb +++ b/lib/plum/frame_utils.rb @@ -49,12 +49,14 @@ module Plum # # @return [Hash<Symbol, Integer>] The parsed strings. def parse_settings - (self.length / 6).times.map {|i| - id = self.payload.uint16(6 * i) - val = self.payload.uint32(6 * i + 2) - name = Frame::SETTINGS_TYPE.key(id) or next nil - [name, val] - }.compact.to_h + settings = {} + payload.each_byteslice(6) do |param| + id = param.uint16 + name = Frame::SETTINGS_TYPE.key(id) + # ignore unknown settings type + settings[name] = param.uint32(2) if name + end + settings end end end diff --git a/lib/plum/stream_helper.rb b/lib/plum/stream_helper.rb index 5be440e..4ba7a14 100644 --- a/lib/plum/stream_helper.rb +++ b/lib/plum/stream_helper.rb @@ -33,7 +33,7 @@ module Plum def send_headers(headers, end_stream:) max = @connection.remote_settings[:max_frame_size] encoded = @connection.hpack_encoder.encode(headers) - original_frame = Frame.headers(id, encoded, :end_headers, (end_stream && :end_stream)) + original_frame = Frame.headers(id, encoded, :end_headers, (end_stream && :end_stream || nil)) original_frame.split_headers(max).each do |frame| send frame end |