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 2 years ago. Updated over 2 years ago.

Assignee:Hiroshi Nakamura
ruby -v:ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux] Backport:


Minimal demonstration code:

require 'webrick'

class BugDemonstrator < WEBrick::HTTPServlet::AbstractServlet
def do_GET(request, response)
response.body = ''
response.status = 204
response.content_length = 0

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

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) [x86_64-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.


#1 Updated by Hiroshi Nakamura over 2 years ago

  • Category set to lib
  • Assignee set to Hiroshi Nakamura

#2 Updated by Steve Klabnik over 2 years 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 2 years ago

  • Status changed from Open to Assigned

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

Also available in: Atom PDF