Skip to content

Commit b86eebf

Browse files
committed
Potential fix.
1 parent c5f81ab commit b86eebf

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

lib/webrick/httprequest.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def content_type
318318
def [](header_name)
319319
if @header
320320
value = @header[header_name.downcase]
321-
value.empty? ? nil : value.join(", ")
321+
value.empty? ? nil : value.join
322322
end
323323
end
324324

@@ -329,7 +329,7 @@ def each
329329
if @header
330330
@header.each{|k, v|
331331
value = @header[k]
332-
yield(k, value.empty? ? nil : value.join(", "))
332+
yield(k, value.empty? ? nil : value.join)
333333
}
334334
end
335335
end

lib/webrick/httputils.rb

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,22 @@ def mime_type(filename, mime_tab)
152152
# Parses an HTTP header +raw+ into a hash of header fields with an Array
153153
# of values.
154154

155+
class SplitHeader < Array
156+
def join(separator = ", ")
157+
super
158+
end
159+
end
160+
161+
class CookieHeader < Array
162+
def join(separator = "; ")
163+
super
164+
end
165+
end
166+
167+
HEADER_CLASSES = Hash.new(SplitHeader).update({
168+
"cookie" => CookieHeader,
169+
})
170+
155171
def parse_header(raw)
156172
header = Hash.new([].freeze)
157173
field = nil
@@ -160,7 +176,7 @@ def parse_header(raw)
160176
when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):(.*?)\z/om
161177
field, value = $1, $2.strip
162178
field.downcase!
163-
header[field] = [] unless header.has_key?(field)
179+
header[field] = HEADER_CLASSES[field].new unless header.has_key?(field)
164180
header[field] << value
165181
when /^\s+(.*?)/om
166182
value = line.strip

0 commit comments

Comments
 (0)