diff --git a/lib/bunny/exceptions.rb b/lib/bunny/exceptions.rb index ec1cd1952..af42a23b8 100644 --- a/lib/bunny/exceptions.rb +++ b/lib/bunny/exceptions.rb @@ -136,4 +136,13 @@ class InvalidCommand < ConnectionLevelException class UnexpectedFrame < ConnectionLevelException end + + class NetworkErrorWrapper < StandardError + attr_reader :other + + def initialize(other) + super(other.message) + @other = other + end + end end diff --git a/lib/bunny/session.rb b/lib/bunny/session.rb index 0c627f04d..fcc5573df 100644 --- a/lib/bunny/session.rb +++ b/lib/bunny/session.rb @@ -263,7 +263,7 @@ def handle_frame(ch_number, method) @event_loop = nil @transport.close - rescue Exception => e + rescue StandardError => e puts e.class.name puts e.message puts e.backtrace @@ -309,6 +309,8 @@ def handle_frameset(ch_number, frames) end def handle_network_failure(exception) + raise NetworkErrorWrapper.new(exception) unless @threaded + if !recovering_from_network_failure? @recovering_from_network_failure = true if recoverable_network_failure?(exception) diff --git a/lib/bunny/transport.rb b/lib/bunny/transport.rb index 733d6f2e7..44073c6fb 100644 --- a/lib/bunny/transport.rb +++ b/lib/bunny/transport.rb @@ -175,7 +175,7 @@ def initialize_socket @socket.post_connection_check(host) if @verify_ssl @socket end - rescue Exception => e + rescue StandardError, ConnectionTimeout => e @status = :not_connected raise Bunny::TCPConnectionFailed.new(e, self.hostname, self.port) end