From f6694522ac67221a2670a75533ebf366534994c6 Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Fri, 28 Aug 2026 03:19:14 +0300 Subject: [PATCH] Process message stacks without intermediate traversal allocations --- lib/websocket/extensions.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/websocket/extensions.rb b/lib/websocket/extensions.rb index 14ca7ab..bb2901c 100644 --- a/lib/websocket/extensions.rb +++ b/lib/websocket/extensions.rb @@ -135,23 +135,25 @@ def valid_frame_rsv(frame) alias :valid_frame_rsv? :valid_frame_rsv def process_incoming_message(message) - @sessions.reverse.inject(message) do |msg, (ext, session)| + @sessions.reverse_each do |ext, session| begin - session.process_incoming_message(msg) + message = session.process_incoming_message(message) rescue => error raise ExtensionError, [ext.name, error.message].join(': ') end end + message end def process_outgoing_message(message) - @sessions.inject(message) do |msg, (ext, session)| + @sessions.each do |ext, session| begin - session.process_outgoing_message(msg) + message = session.process_outgoing_message(message) rescue => error raise ExtensionError, [ext.name, error.message].join(': ') end end + message end def close