Skip to content

Commit 580838d

Browse files
committed
Reject repeated activation of the same extension session
1 parent c7e1f86 commit 580838d

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

‎lib/websocket/extensions.rb‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ def generate_offer
7575
def activate(header)
7676
responses = Parser.parse_header(header)
7777
@sessions = []
78+
activated = {}
7879

7980
responses.each_offer do |name, params|
8081
unless record = @index[name]
@@ -83,6 +84,11 @@ def activate(header)
8384

8485
ext, session = *record
8586

87+
if activated[name]
88+
raise ExtensionError, %Q{Server sent multiple responses for extension "#{ name }"}
89+
end
90+
activated[name] = true
91+
8692
if reserved = reserved?(ext)
8793
raise ExtensionError, %Q{Server sent two extension responses that use the RSV#{ reserved[0] }} +
8894
%Q{bit: "#{ reserved[1] }" and "#{ ext.name }"}

0 commit comments

Comments
 (0)