+1 On Wed, Dec 14, 2016 at 2:14 PM, Eric Wong wrote: > RFC 7231, section 6.3.5 gives three possible options for what a > server MUST do when sending a 205 status code: > > > Since the 205 status code implies that no additional content will be > > provided, a server MUST NOT generate a payload in a 205 response. In > > other words, a server MUST do one of the following for a 205 > > response: a) indicate a zero-length body for the response by > > including a Content-Length header field with a value of 0; b) > > indicate a zero-length payload for the response by including a > > Transfer-Encoding header field with a value of chunked and a message > > body consisting of a single chunk of zero-length; or, c) close the > > connection immediately after sending the blank line terminating the > > header section. > > rack itself has no control over c), but should leave options > a) and b) available for middleware and application authors. > > https://tools.ietf.org/html/rfc7231#section-6.3.6 > > The older RFC 2616 text was vague and not specific about > what a server should do: > > https://tools.ietf.org/html/rfc2616#section-10.2.6 > > I noticed this from Plack: https://metacpan.org/pod/Plack::Util > > This reverts commit 2c5b076aaba6c83ffce8c6c2b5c49085c1abb5a5. > --- > If you prefer to use "git pull" or "git merge": > > The following changes since commit 9e73bd1ae7b5df937302a148ab99bf > 3be12eb063: > > Merge pull request #1135 from tonytonyjan/patch-rdoc (2016-12-08 > 13:13:44 -0500) > > are available in the git repository at: > > git://80x24.org/rack rfc7231-sec6.3.6-205 > > for you to fetch changes up to bcf2698bcc90f346b145538e53d0d61bcceb2e48: > > Revert "Add 205 Reset Content to the list of statuses without a > message body" (2016-12-14 21:58:54 +0000) > > ---------------------------------------------------------------- > Eric Wong (1): > Revert "Add 205 Reset Content to the list of statuses without a > message body" > > SPEC | 4 ++-- > lib/rack/lint.rb | 4 ++-- > lib/rack/mock.rb | 2 +- > lib/rack/response.rb | 2 +- > lib/rack/utils.rb | 2 +- > test/spec_chunked.rb | 2 +- > test/spec_lint.rb | 4 ++-- > test/spec_response.rb | 4 ++-- > 8 files changed, 12 insertions(+), 12 deletions(-) > > diff --git a/SPEC b/SPEC > index 7e3af40a..9b278846 100644 > --- a/SPEC > +++ b/SPEC > @@ -237,10 +237,10 @@ consisting of lines (for multiple header values, > e.g. multiple > The lines must not contain characters below 037. > === The Content-Type > There must not be a Content-Type, when the +Status+ is 1xx, > -204, 205 or 304. > +204 or 304. > === The Content-Length > There must not be a Content-Length header when the > -+Status+ is 1xx, 204, 205 or 304. > ++Status+ is 1xx, 204 or 304. > === The Body > The Body must respond to +each+ > and must only yield String values. > diff --git a/lib/rack/lint.rb b/lib/rack/lint.rb > index 54d37822..683ba684 100644 > --- a/lib/rack/lint.rb > +++ b/lib/rack/lint.rb > @@ -659,7 +659,7 @@ module Rack > def check_content_type(status, headers) > headers.each { |key, value| > ## There must not be a Content-Type, when the +Status+ > is 1xx, > - ## 204, 205 or 304. > + ## 204 or 304. > if key.downcase == "content-type" > assert("Content-Type header found in #{status} response, not > allowed") { > not Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include? > status.to_i > @@ -674,7 +674,7 @@ module Rack > headers.each { |key, value| > if key.downcase == 'content-length' > ## There must not be a Content-Length header when the > - ## +Status+ is 1xx, 204, 205 or 304. > + ## +Status+ is 1xx, 204 or 304. > assert("Content-Length header found in #{status} response, not > allowed") { > not Rack::Utils::STATUS_WITH_NO_ENTITY_BODY.include? > status.to_i > } > diff --git a/lib/rack/mock.rb b/lib/rack/mock.rb > index 4ebc4df1..afc855e2 100644 > --- a/lib/rack/mock.rb > +++ b/lib/rack/mock.rb > @@ -190,7 +190,7 @@ module Rack > end > > def empty? > - [201, 204, 205, 304].include? status > + [201, 204, 304].include? status > end > end > end > diff --git a/lib/rack/response.rb b/lib/rack/response.rb > index 9ac47aad..a9f0c2a3 100644 > --- a/lib/rack/response.rb > +++ b/lib/rack/response.rb > @@ -60,7 +60,7 @@ module Rack > def finish(&block) > @block = block > > - if [204, 205, 304].include?(status.to_i) > + if [204, 304].include?(status.to_i) > delete_header CONTENT_TYPE > delete_header CONTENT_LENGTH > close > diff --git a/lib/rack/utils.rb b/lib/rack/utils.rb > index 7b842125..c253f3cf 100644 > --- a/lib/rack/utils.rb > +++ b/lib/rack/utils.rb > @@ -576,7 +576,7 @@ module Rack > } > > # Responses with HTTP status codes that should not have an entity body > - STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 205 << > 304) > + STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 304) > > SYMBOL_TO_STATUS_CODE = Hash[*HTTP_STATUS_CODES.map { |code, message| > [message.downcase.gsub(/\s|-|'/, '_').to_sym, code] > diff --git a/test/spec_chunked.rb b/test/spec_chunked.rb > index 7bbcfd92..dc6e8c9d 100644 > --- a/test/spec_chunked.rb > +++ b/test/spec_chunked.rb > @@ -92,7 +92,7 @@ describe Rack::Chunked do > body.join.must_equal 'Hello World!' > end > > - [100, 204, 205, 304].each do |status_code| > + [100, 204, 304].each do |status_code| > it "not modify response when status code is #{status_code}" do > app = lambda { |env| [status_code, {}, []] } > status, headers, _ = chunked(app).call(@env) > diff --git a/test/spec_lint.rb b/test/spec_lint.rb > index 6d1c2c45..d99c1aa3 100644 > --- a/test/spec_lint.rb > +++ b/test/spec_lint.rb > @@ -269,7 +269,7 @@ describe Rack::Lint do > # }.must_raise(Rack::Lint::LintError). > # message.must_match(/No Content-Type/) > > - [100, 101, 204, 205, 304].each do |status| > + [100, 101, 204, 304].each do |status| > lambda { > Rack::Lint.new(lambda { |env| > [status, {"Content-type" => "text/plain", > "Content-length" => "0"}, []] > @@ -280,7 +280,7 @@ describe Rack::Lint do > end > > it "notice content-length errors" do > - [100, 101, 204, 205, 304].each do |status| > + [100, 101, 204, 304].each do |status| > lambda { > Rack::Lint.new(lambda { |env| > [status, {"Content-length" => "0"}, []] > diff --git a/test/spec_response.rb b/test/spec_response.rb > index 2dd2c001..987199de 100644 > --- a/test/spec_response.rb > +++ b/test/spec_response.rb > @@ -410,7 +410,7 @@ describe Rack::Response do > res.body.must_be :closed? > end > > - it "calls close on #body when 204, 205, or 304" do > + it "calls close on #body when 204 or 304" do > res = Rack::Response.new > res.body = StringIO.new > res.finish > @@ -424,7 +424,7 @@ describe Rack::Response do > res.body = StringIO.new > res.status = 205 > _, _, b = res.finish > - res.body.must_be :closed? > + res.body.wont_be :closed? > b.wont_equal res.body > > res.body = StringIO.new > -- > EW > > -- > > --- > You received this message because you are subscribed to the Google Groups > "Rack Development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to rack-devel+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "Rack Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to rack-devel+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/d/optout.