diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-11-09 19:14:27 -0800 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-11-11 15:46:58 -0800 |
commit | 8c104a8a9e341aaaa36bd270cf48ded2f479f5a0 (patch) | |
tree | 9e242c560676beebf2214dc36c7bb5a78ba9b1fd /lib/rainbows/base.rb | |
parent | b778740240e6dbeeaf1c4cf604865170e7cb454c (diff) | |
download | rainbows-8c104a8a9e341aaaa36bd270cf48ded2f479f5a0.tar.gz |
Unicorn 0.94.0 got a more generic handle_error function that's useful in the Thread* models. The Revactor one is a little different but similar to be worth refactoring to match our standard pieces.
Diffstat (limited to 'lib/rainbows/base.rb')
-rw-r--r-- | lib/rainbows/base.rb | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/lib/rainbows/base.rb b/lib/rainbows/base.rb index 04725f0..03cf624 100644 --- a/lib/rainbows/base.rb +++ b/lib/rainbows/base.rb @@ -10,14 +10,6 @@ module Rainbows include Rainbows::Const G = Rainbows::G - # write a response without caring if it went out or not for error - # messages. - # TODO: merge into Unicorn::HttpServer - def emergency_response(client, response_str) - client.write_nonblock(response_str) rescue nil - client.close rescue nil - end - def listen_loop_error(e) G.alive or return logger.error "Unhandled listen loop exception #{e.inspect}." @@ -72,14 +64,8 @@ module Rainbows # assuming we haven't closed the socket, but don't get hung up # if the socket is already closed or broken. We'll always ensure # the socket is closed at the end of this function - rescue EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF - emergency_response(client, ERROR_500_RESPONSE) - rescue HttpParserError # try to tell the client they're bad - buf.empty? or emergency_response(client, ERROR_400_RESPONSE) - rescue Object => e - emergency_response(client, ERROR_500_RESPONSE) - logger.error "Read error: #{e.inspect}" - logger.error e.backtrace.join("\n") + rescue => e + handle_error(client, e) end def join_threads(threads) |