Skip to content

Commit 758a3d1

Browse files
committed
Remove fallback implementation of mask_xor.
1 parent c55bf46 commit 758a3d1

File tree

1 file changed

+8
-21
lines changed

1 file changed

+8
-21
lines changed

lib/protocol/websocket/frame.rb

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -90,28 +90,15 @@ def continued?
9090
attr_accessor :length
9191
attr_accessor :payload
9292

93-
if IO.const_defined?(:Buffer) && IO::Buffer.respond_to?(:for) && IO::Buffer.method_defined?(:xor!)
94-
private def mask_xor(data, mask)
95-
buffer = data.dup
96-
mask_buffer = IO::Buffer.for(mask)
97-
98-
IO::Buffer.for(buffer) do |buffer|
99-
buffer.xor!(mask_buffer)
100-
end
101-
102-
return buffer
103-
end
104-
else
105-
warn "IO::Buffer not available, falling back to slow implementation of mask_xor!"
106-
private def mask_xor(data, mask)
107-
result = String.new(encoding: Encoding::BINARY)
108-
109-
for i in 0...data.bytesize do
110-
result << (data.getbyte(i) ^ mask.getbyte(i % 4))
111-
end
112-
113-
return result
93+
private def mask_xor(data, mask)
94+
buffer = data.dup
95+
mask_buffer = IO::Buffer.for(mask)
96+
97+
IO::Buffer.for(buffer) do |buffer|
98+
buffer.xor!(mask_buffer)
11499
end
100+
101+
return buffer
115102
end
116103

117104
def pack(data = "")

0 commit comments

Comments
 (0)