Bug #7469

WEBrick "Could not determine content-length of response body. Set content-length of the response..." even when content-length is set

Added by mathew murphy over 1 year ago. Updated over 1 year ago.

[ruby-core:50340]
Status:Assigned
Priority:Normal
Assignee:Hiroshi Nakamura
Category:lib
Target version:-
ruby -v:ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] Backport:

Description

Minimal demonstration code:

########
require 'webrick'

class BugDemonstrator < WEBrick::HTTPServlet::AbstractServlet
def doGET(request, response)
response.body = ''
response.status = 204
response.content
length = 0
end
end

server = WEBrick::HTTPServer.new(:Port => 8080, :AccessLog => [])
server.mount "/", BugDemonstrator
trap("INT") do
server.shutdown
end
server.start
########

Output when run, connecting to localhost:8080 to issue an HTTP GET:

$ ruby webrickbug.rb

[2012-11-29 13:21:25] INFO WEBrick 1.3.1

[2012-11-29 13:21:25] INFO ruby 1.9.3 (2012-11-10) [x8664-linux]

[2012-11-29 13:21:25] WARN TCPServer Error: Address already in use - bind(2)

[2012-11-29 13:21:25] INFO WEBrick::HTTPServer#start: pid=4941 port=8080

[2012-11-29 13:21:29] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

C[2012-11-29 13:21:32] INFO going to shutdown ...

[2012-11-29 13:21:32] INFO WEBrick::HTTPServer#start done.
$ ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86
64-linux]
$

I'm doing literally what the warning message says to do -- i.e. setting the content-length of the response -- but I'm still getting the warning.

History

#1 Updated by Hiroshi Nakamura over 1 year ago

  • Category set to lib
  • Assignee set to Hiroshi Nakamura

#2 Updated by Steve Klabnik over 1 year ago

We were seeing this as well when using webrick with Rails. However, putting

gem 'webrick', '= 1.3.1'

in the Gemfile seemed to fix it, which is strange, since the standard library one is also v1.3.1. Is it possible that the gem is different than stdlib?

#3 Updated by Eric Hodel over 1 year ago

  • Status changed from Open to Assigned

=begin
I cannot reproduce it with the example code given or by removing (({response.body = ''})), (({response.content_length = 0})) or both lines with latest trunk.
=end

Also available in: Atom PDF