webrick: raise EOFError in parse when read line is nil
[Bug #15146] From: Justin Li <git@justinli.net> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
d54d9ba7de
commit
1aef602d5a
@ -445,12 +445,14 @@ module WEBrick
|
|||||||
|
|
||||||
def read_request_line(socket)
|
def read_request_line(socket)
|
||||||
@request_line = read_line(socket, MAX_URI_LENGTH) if socket
|
@request_line = read_line(socket, MAX_URI_LENGTH) if socket
|
||||||
|
raise HTTPStatus::EOFError unless @request_line
|
||||||
|
|
||||||
@request_bytes = @request_line.bytesize
|
@request_bytes = @request_line.bytesize
|
||||||
if @request_bytes >= MAX_URI_LENGTH and @request_line[-1, 1] != LF
|
if @request_bytes >= MAX_URI_LENGTH and @request_line[-1, 1] != LF
|
||||||
raise HTTPStatus::RequestURITooLarge
|
raise HTTPStatus::RequestURITooLarge
|
||||||
end
|
end
|
||||||
|
|
||||||
@request_time = Time.now
|
@request_time = Time.now
|
||||||
raise HTTPStatus::EOFError unless @request_line
|
|
||||||
if /^(\S+)\s+(\S++)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line
|
if /^(\S+)\s+(\S++)(?:\s+HTTP\/(\d+\.\d+))?\r?\n/mo =~ @request_line
|
||||||
@request_method = $1
|
@request_method = $1
|
||||||
@unparsed_uri = $2
|
@unparsed_uri = $2
|
||||||
|
@ -422,4 +422,11 @@ GET /
|
|||||||
req.body
|
req.body
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_eof_raised_when_line_is_nil
|
||||||
|
assert_raise(WEBrick::HTTPStatus::EOFError) {
|
||||||
|
req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP)
|
||||||
|
req.parse(StringIO.new(""))
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user