about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorevanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9>2007-10-21 02:54:53 +0000
committerevanweaver <evanweaver@19e92222-5c0b-0410-8929-a290d50e31e9>2007-10-21 02:54:53 +0000
commitc60ff81f1ed1efe7f03fc31cf4c566264f3e314a (patch)
tree223f30e9736aa466c6e020f15fe5fff06398a6d2 /lib
parent0320048974fb4b81c365f9cf47ecd24384eb3f35 (diff)
downloadunicorn-c60ff81f1ed1efe7f03fc31cf4c566264f3e314a.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@710 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'lib')
-rw-r--r--lib/mongrel.rb31
1 files changed, 19 insertions, 12 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb
index 5b5de59..2e4a988 100644
--- a/lib/mongrel.rb
+++ b/lib/mongrel.rb
@@ -266,9 +266,9 @@ module Mongrel
 
           update_request_progress(remain, total)
         end
-      rescue Object
-        STDERR.puts "#{Time.now}: Error reading HTTP body: #$!"
-        STDERR.puts $!.backtrace.join("\n")
+      rescue Object => e
+        STDERR.puts "#{Time.now}: Error reading HTTP body: #{e.inspect}"
+        STDERR.puts e.backtrace.join("\n")
         # any errors means we should delete the file, including if the file is dumped
         @socket.close rescue nil
         @body.delete if @body.class == Tempfile
@@ -657,16 +657,23 @@ module Mongrel
         end
       rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF
         client.close rescue nil
-      rescue HttpParserError
-        STDERR.puts "#{Time.now}: HTTP parse error, malformed request (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #$!"
+      rescue HttpParserError => e
+        STDERR.puts "#{Time.now}: HTTP parse error, malformed request (#{params[Const::HTTP_X_FORWARDED_FOR] || client.peeraddr.last}): #{e.inspect}"
         STDERR.puts "#{Time.now}: REQUEST DATA: #{data.inspect}\n---\nPARAMS: #{params.inspect}\n---\n"
       rescue Errno::EMFILE
         reap_dead_workers('too many files')
-      rescue Object
-        STDERR.puts "#{Time.now}: Error: #$!"
-        STDERR.puts $!.backtrace.join("\n")
+      rescue Object => e
+        STDERR.puts "#{Time.now}: Read error: #{e.inspect}"
+        STDERR.puts e.backtrace.join("\n")
       ensure
-        client.close rescue nil
+        begin
+          client.close
+        rescue IOError
+          # Already closed
+        rescue Object => e
+          STDERR.puts "#{Time.now}: Client error: #{e.inspect}"
+          STDERR.puts e.backtrace.join("\n")
+        end
         request.body.delete if request and request.body.class == Tempfile
       end
     end
@@ -763,9 +770,9 @@ module Mongrel
           rescue Errno::ECONNABORTED
             # client closed the socket even before accept
             client.close rescue nil
-          rescue Object => exc
-            STDERR.puts "** Unhandled exception #{exc.inspect}."
-            STDERR.puts $!.backtrace.join("\n")
+          rescue Object => e
+            STDERR.puts "#{Time.now}: Unhandled listen loop exception #{e.inspect}."
+            STDERR.puts e.backtrace.join("\n")
           end
         end
         graceful_shutdown