aboutsummaryrefslogtreecommitdiffstats
path: root/lib/plum
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-08-11 19:42:53 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-08-11 19:42:53 +0900
commitcc330a0a7010d3ecd6841cc58abb1cd3a2d87132 (patch)
treedb4bba02cd5f9066b6ed8679a015fae36f5fffb6 /lib/plum
parent61e594d1508716d9351f3dd355edef6e86e980d9 (diff)
downloadplum-cc330a0a7010d3ecd6841cc58abb1cd3a2d87132.tar.gz
frame_utils: simplify Frame#parse_settings
Diffstat (limited to 'lib/plum')
-rw-r--r--lib/plum/frame_utils.rb14
-rw-r--r--lib/plum/stream_helper.rb2
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