lib/webrick: explicitly convert header values to a string
The values of @header are expected to be all strings; WEBrick::HTTPResponse::[]=(key, val) explicitly converts the second argument to a string and assigns it to @header hash. However, there were some points in WEBrick internal code that assigns non-String to @header. This change fixes the issues. The values are checked by `header_value =~ /\r\n/` in check_header. The type confusion caused conflict with removal of `Object#=~` [Feature #15231]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65984 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b1ad07bd1a
commit
7a635a7d12
@ -254,7 +254,7 @@ module WEBrick
|
|||||||
@header.delete('content-length')
|
@header.delete('content-length')
|
||||||
elsif @header['content-length'].nil?
|
elsif @header['content-length'].nil?
|
||||||
unless @body.is_a?(IO)
|
unless @body.is_a?(IO)
|
||||||
@header['content-length'] = @body ? @body.bytesize : 0
|
@header['content-length'] = (@body ? @body.bytesize : 0).to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ module WEBrick
|
|||||||
# Location is a single absoluteURI.
|
# Location is a single absoluteURI.
|
||||||
if location = @header['location']
|
if location = @header['location']
|
||||||
if @request_uri
|
if @request_uri
|
||||||
@header['location'] = @request_uri.merge(location)
|
@header['location'] = @request_uri.merge(location).to_s
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -55,7 +55,7 @@ module WEBrick
|
|||||||
else
|
else
|
||||||
mtype = HTTPUtils::mime_type(@local_path, @config[:MimeTypes])
|
mtype = HTTPUtils::mime_type(@local_path, @config[:MimeTypes])
|
||||||
res['content-type'] = mtype
|
res['content-type'] = mtype
|
||||||
res['content-length'] = st.size
|
res['content-length'] = st.size.to_s
|
||||||
res['last-modified'] = mtime.httpdate
|
res['last-modified'] = mtime.httpdate
|
||||||
res.body = File.open(@local_path, "rb")
|
res.body = File.open(@local_path, "rb")
|
||||||
end
|
end
|
||||||
@ -144,7 +144,7 @@ module WEBrick
|
|||||||
raise HTTPStatus::RequestRangeNotSatisfiable if first < 0
|
raise HTTPStatus::RequestRangeNotSatisfiable if first < 0
|
||||||
res['content-type'] = mtype
|
res['content-type'] = mtype
|
||||||
res['content-range'] = "bytes #{first}-#{last}/#{filesize}"
|
res['content-range'] = "bytes #{first}-#{last}/#{filesize}"
|
||||||
res['content-length'] = last - first + 1
|
res['content-length'] = (last - first + 1).to_s
|
||||||
res.body = io.dup
|
res.body = io.dup
|
||||||
else
|
else
|
||||||
raise HTTPStatus::BadRequest
|
raise HTTPStatus::BadRequest
|
||||||
|
Loading…
x
Reference in New Issue
Block a user