Skip to content

Commit

Permalink
Potential fix.
Browse files Browse the repository at this point in the history
  • Loading branch information
ioquatix committed Jun 7, 2024
1 parent c5f81ab commit b86eebf
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
4 changes: 2 additions & 2 deletions lib/webrick/httprequest.rb
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ def content_type
def [](header_name)
if @header
value = @header[header_name.downcase]
value.empty? ? nil : value.join(", ")
value.empty? ? nil : value.join
end
end

Expand All @@ -329,7 +329,7 @@ def each
if @header
@header.each{|k, v|
value = @header[k]
yield(k, value.empty? ? nil : value.join(", "))
yield(k, value.empty? ? nil : value.join)
}
end
end
Expand Down
18 changes: 17 additions & 1 deletion lib/webrick/httputils.rb
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,22 @@ def mime_type(filename, mime_tab)
# Parses an HTTP header +raw+ into a hash of header fields with an Array
# of values.

class SplitHeader < Array
def join(separator = ", ")
super
end
end

class CookieHeader < Array
def join(separator = "; ")
super
end
end

HEADER_CLASSES = Hash.new(SplitHeader).update({
"cookie" => CookieHeader,
})

def parse_header(raw)
header = Hash.new([].freeze)
field = nil
Expand All @@ -160,7 +176,7 @@ def parse_header(raw)
when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):(.*?)\z/om
field, value = $1, $2.strip
field.downcase!
header[field] = [] unless header.has_key?(field)
header[field] = HEADER_CLASSES[field].new unless header.has_key?(field)
header[field] << value
when /^\s+(.*?)/om
value = line.strip
Expand Down

0 comments on commit b86eebf

Please sign in to comment.