diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-08-22 06:01:35 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-08-22 06:01:35 +0000 |
commit | 45036848258cb5635e68880aa26e52a4b3e88b43 (patch) | |
tree | 60fca6da7b295a50c9398555c61d513690aed8a4 /lib/mongrel.rb | |
parent | af538004f57126463b9b596ff19a47a627b3bcfc (diff) | |
download | unicorn-45036848258cb5635e68880aa26e52a4b3e88b43.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@334 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'lib/mongrel.rb')
-rw-r--r-- | lib/mongrel.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 6fb7222..ca4ea12 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -577,7 +577,10 @@ module Mongrel break #done else # Parser is not done, queue up more data to read and continue parsing - data << client.readpartial(Const::CHUNK_SIZE) + chunk = client.readpartial(Const::CHUNK_SIZE) + break if !chunk or chunk.length == 0 # read failed, stop processing + + data << chunk if data.length >= Const::MAX_HEADER raise HttpParserError.new("HEADER is longer than allowed, aborting client early.") end @@ -586,8 +589,8 @@ module Mongrel rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF # ignored rescue HttpParserError - STDERR.puts "#{Time.now}: BAD CLIENT (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #$!" if $mongrel_debug_client + STDERR.puts "#{Time.now}: BAD CLIENT (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #$!" STDERR.puts "#{Time.now}: REQUEST DATA: #{data.inspect}\n---\nPARAMS: #{params.inspect}\n---\n" end rescue Errno::EMFILE @@ -680,6 +683,9 @@ module Mongrel rescue Errno::ECONNABORTED # client closed the socket even before accept client.close rescue Object + rescue Object => exc + STDERR.puts "!!!!!! UNHANDLED EXCEPTION! #{exc}. TELL ZED HE'S A MORON." + STDERR.puts $!.backtrace.join("\n") if $mongrel_debug_client end end |