Skip to content

Commit faa40dc

Browse files
authored
Merge pull request #98 from thekuwayama/ech_outer_extensions__7
[ech_outer_extensions] 7. refactor: remove_and_replace! without sort & reduce
2 parents 915ce84 + 37e65aa commit faa40dc

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

.rubocop.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ AllCops:
44
Gemspec/RequiredRubyVersion:
55
Enabled: false
66

7+
Semicolon:
8+
AllowAsExpressionSeparator: true
9+
710
Style/ConditionalAssignment:
811
Enabled: false
912

1013
Style/Documentation:
1114
Enabled: false
1215

13-
Style/EachWithObject:
14-
Enabled: false
15-
1616
Style/NumericLiterals:
1717
Enabled: false
1818

lib/tttls1.3/message/extensions.rb

+21-21
Original file line numberDiff line numberDiff line change
@@ -105,31 +105,31 @@ def <<(ex)
105105
store(ex.extension_type, ex)
106106
end
107107

108-
# @param ex_types [Array of TTTLS13::Message::ExtensionType]
108+
# removing and replacing extensions from EncodedClientHelloInner
109+
# with a single "ech_outer_extensions"
110+
#
111+
# for example
112+
# - before
113+
# - self.keys: [A B C D E]
114+
# - param : [D B]
115+
# - after remove_and_replace!
116+
# - self.keys: [A C E B D]
117+
# - return : [A C E ech_outer_extensions[B D]]
118+
# @param outer_extensions [Array of TTTLS13::Message::ExtensionType]
109119
#
110120
# @return [TTTLS13::Message::Extensions] for EncodedClientHelloInner
111-
def remove_and_replace!(ex_types)
112-
# NOTE: sort external_extensions in descending order.
113-
tmp1 = filter { |k, _| !ex_types.include?(k) }
114-
tmp2 = filter { |k, _| ex_types.include?(k) }.sort
121+
def remove_and_replace!(outer_extensions)
122+
tmp1 = filter { |k, _| !outer_extensions.include?(k) }
123+
tmp2 = filter { |k, _| outer_extensions.include?(k) }
124+
115125
clear
116-
tmp1.each { |k, v| self[k] = v }
117-
tmp2.each { |k, v| self[k] = v }
118-
119-
# removing and replacing extensions from EncodedClientHelloInner
120-
# with a single "ech_outer_extensions"
121-
reduce(Message::Extensions.new) do |acc, (k, v)|
122-
if ex_types.include?(k) &&
123-
!acc.include?(Message::ExtensionType::ECH_OUTER_EXTENSIONS)
124-
outer_extensions = (ex_types - (ex_types - keys)).sort
125-
acc[Message::ExtensionType::ECH_OUTER_EXTENSIONS] = \
126-
Message::Extension::ECHOuterExtensions.new(outer_extensions)
127-
elsif !ex_types.include?(k)
128-
acc[k] = v
129-
end
126+
replaced = Message::Extensions.new
127+
tmp1.each { |_, v| self << v; replaced << v }
128+
tmp2.each { |_, v| self << v }
130129

131-
acc
132-
end
130+
replaced << Message::Extension::ECHOuterExtensions.new(tmp2.keys) \
131+
unless tmp2.keys.empty?
132+
replaced
133133
end
134134

135135
class << self

0 commit comments

Comments
 (0)