diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-09-03 10:55:11 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-09-03 10:55:11 -0700 |
commit | d4fd801ceebf56fe9204a3b2829138fb4c433d39 (patch) | |
tree | 435290909d2a5c9021fb25d4db27aff0cbeb96f4 /lib/unicorn/http_response.rb | |
parent | 52c2c6273e7c007543de776937a25827c27d0ff1 (diff) | |
download | unicorn-d4fd801ceebf56fe9204a3b2829138fb4c433d39.tar.gz |
HTTP/0.9 GET requests expect responses without headers. Some weird applications/tools still use the ancient HTTP/0.9 protocol for weird reasons, so we'll support them. ref: rfc 1945, section 4.1
Diffstat (limited to 'lib/unicorn/http_response.rb')
-rw-r--r-- | lib/unicorn/http_response.rb | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/unicorn/http_response.rb b/lib/unicorn/http_response.rb index 5602a43..0835820 100644 --- a/lib/unicorn/http_response.rb +++ b/lib/unicorn/http_response.rb @@ -33,9 +33,7 @@ module Unicorn SKIP = { 'connection' => true, 'date' => true, 'status' => true }.freeze OUT = [] # :nodoc - # writes the rack_response to socket as an HTTP response - def self.write(socket, rack_response) - status, headers, body = rack_response + def self.write_header(socket, status, headers) status = CODES[status.to_i] || status OUT.clear @@ -59,6 +57,13 @@ module Unicorn "Status: #{status}\r\n" \ "Connection: close\r\n" \ "#{OUT.join(Z)}\r\n") + + end + + # writes the rack_response to socket as an HTTP response + def self.write(socket, rack_response, have_header = true) + status, headers, body = rack_response + write_header(socket, status, headers) if have_header body.each { |chunk| socket.write(chunk) } socket.close # flushes and uncorks the socket immediately ensure |