diff --git a/ChangeLog b/ChangeLog index 03ecceb6a2..6eab773132 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +Thu Dec 4 08:29:43 2003 GOTOU Yuuzou + + * lib/webrick/server.rb (GenericServer#start): should rescue + Exception to avoid unexpected aborting. [ruby-core:01853] + + * lib/webrick/server.rb (GenericServer#start_thread): should check + that peeraddr isn't nil before printing. + + * lib/webrick/httpresponse.rb (HTTPResponse#start_thread): should + rescue Exception to avoid unexpected aborting of thread. + Thu Dec 4 03:48:59 2003 Tanaka Akira * lib/pathname.rb (Pathname#link, Pathname#symlink): obsoleted. diff --git a/lib/webrick/httpresponse.rb b/lib/webrick/httpresponse.rb index 667c4c46cd..9d6e5522ed 100644 --- a/lib/webrick/httpresponse.rb +++ b/lib/webrick/httpresponse.rb @@ -84,10 +84,10 @@ def send_response(socket) setup_header() send_header(socket) send_body(socket) - rescue Errno::EPIPE - @logger.error("HTTPResponse#send_response: EPIPE occured.") + rescue Errno::EPIPE, Errno::ECONNRESET, Errno::ENOTCONN => ex + @logger.debug(ex) @keep_alive = false - rescue => ex + rescue Exception => ex @logger.error(ex) @keep_alive = false end diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb index f89115f035..93e3b2ccf5 100644 --- a/lib/webrick/server.rb +++ b/lib/webrick/server.rb @@ -102,7 +102,7 @@ def start(&block) rescue Errno::EBADF, IOError => ex # if the listening socket was closed in GenericServer#shutdown, # IO::select raise it. - rescue => ex + rescue Exception => ex msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" @logger.error msg end @@ -148,14 +148,20 @@ def start_thread(sock, &block) @logger.debug "accept: #{addr[3]}:#{addr[1]}" call_callback(:AcceptCallback, sock) block ? block.call(sock) : run(sock) - rescue ServerError, Errno::ENOTCONN => ex + rescue Errno::ENOTCONN + @logger.debug "Errno::ENOTCONN raised" + rescue ServerError => ex msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" @logger.error msg rescue Exception => ex @logger.error ex ensure Thread.current[:WEBrickSocket] = nil - @logger.debug "close: #{addr[3]}:#{addr[1]}" + if addr + @logger.debug "close: #{addr[3]}:#{addr[1]}" + else + @logger.debug "close:
" + end sock.close end @tokens.push(nil)