summaryrefslogtreecommitdiff
path: root/lib/net/ssh/multi/session.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/ssh/multi/session.rb')
-rw-r--r--lib/net/ssh/multi/session.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/net/ssh/multi/session.rb b/lib/net/ssh/multi/session.rb
index 957533a..40af774 100644
--- a/lib/net/ssh/multi/session.rb
+++ b/lib/net/ssh/multi/session.rb
@@ -481,7 +481,12 @@ module Net; module SSH; module Multi
begin
server.new_session
- rescue Exception => e
+
+ # I don't understand why this should be necessary--StandardError is a
+ # subclass of Exception, after all--but without explicitly rescuing
+ # StandardError, things like Errno::* and SocketError don't get caught
+ # here!
+ rescue Exception, StandardError => e
server.fail!
@session_mutex.synchronize { @open_connections -= 1 }