mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
close #14145
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@640 19e92222-5c0b-0410-8929-a290d50e31e9
This commit is contained in:
parent
e577ab7e62
commit
370a88b2e4
2 changed files with 27 additions and 2 deletions
|
@ -406,6 +406,7 @@ module Mongrel
|
|||
@socket = socket
|
||||
@body = StringIO.new
|
||||
@status = 404
|
||||
@reason = HTTP_STATUS_CODES[@status]
|
||||
@header = HeaderOut.new(StringIO.new)
|
||||
@header[Const::DATE] = Time.now.httpdate
|
||||
@body_sent = false
|
||||
|
@ -421,8 +422,9 @@ module Mongrel
|
|||
# by simple passing "finalize=true" to the start method. By default
|
||||
# all handlers run and then mongrel finalizes the request when they're
|
||||
# all done.
|
||||
def start(status=200, finalize=false)
|
||||
def start(status=200, finalize=false, reason=HTTP_STATUS_CODES[status])
|
||||
@status = status.to_i
|
||||
@reason = reason
|
||||
yield @header, @body
|
||||
finished if finalize
|
||||
end
|
||||
|
@ -445,7 +447,7 @@ module Mongrel
|
|||
def send_status(content_length=@body.length)
|
||||
if not @status_sent
|
||||
@header['Content-Length'] = content_length if content_length and @status != 304
|
||||
write(Const::STATUS_FORMAT % [@status, HTTP_STATUS_CODES[@status]])
|
||||
write(Const::STATUS_FORMAT % [@status, @reason])
|
||||
@status_sent = true
|
||||
end
|
||||
end
|
||||
|
|
|
@ -102,5 +102,28 @@ class ResponseTest < Test::Unit::TestCase
|
|||
assert io.length > 0, "output didn't have data"
|
||||
assert io.read[-contents.length..-1] == contents, "output doesn't end with file payload"
|
||||
end
|
||||
|
||||
def test_response_with_custom_reason
|
||||
reason = "You made a bad request"
|
||||
io = StringIO.new
|
||||
resp = HttpResponse.new(io)
|
||||
resp.start(400, false, reason) { |head,out| }
|
||||
resp.finished
|
||||
|
||||
io.rewind
|
||||
assert_match(/.* #{reason}$/, io.readline.chomp, "wrong custom reason phrase")
|
||||
end
|
||||
|
||||
def test_response_with_default_reason
|
||||
code = 400
|
||||
io = StringIO.new
|
||||
resp = HttpResponse.new(io)
|
||||
resp.start(code) { |head,out| }
|
||||
resp.finished
|
||||
|
||||
io.rewind
|
||||
assert_match(/.* #{HTTP_STATUS_CODES[code]}$/, io.readline.chomp, "wrong default reason phrase")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue