From c3190a728202d0703e852abeacd1dfb1229942fc Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Fri, 28 Aug 2026 03:13:59 +0300 Subject: [PATCH] Preserve quoted parameter values when parsing and serializing --- lib/websocket/extensions/parser.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/websocket/extensions/parser.rb b/lib/websocket/extensions/parser.rb index f8d8891..073dbd0 100644 --- a/lib/websocket/extensions/parser.rb +++ b/lib/websocket/extensions/parser.rb @@ -34,7 +34,7 @@ def self.parse_header(header) if unquoted data = unquoted elsif quoted - data = quoted.gsub(/\\/, '') + data = quoted.gsub(/\\([\x00-\x7f])/, '\1') else data = true end @@ -66,8 +66,8 @@ def self.serialize_params(name, params) when true then values.push(key) when Numeric then values.push(key + '=' + value.to_s) else - if value =~ NOTOKEN - values.push(key + '="' + value.gsub(/"/, '\"') + '"') + if value == '' or value =~ NOTOKEN + values.push(key + '="' + value.gsub(/["\\]/) { |char| '\\' + char } + '"') else values.push(key + '=' + value) end