]> source.dussan.org Git - redmine.git/commitdiff
Rescue network level errors with LDAP auth (#21137).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 7 Nov 2015 08:27:27 +0000 (08:27 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 7 Nov 2015 08:27:27 +0000 (08:27 +0000)
Patch by Holger Just.

git-svn-id: http://svn.redmine.org/redmine/trunk@14808 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/auth_source_ldap.rb

index 6fb43d44a7f49cf30bb7a3676ac7a6454d52644f..d5a8550c7f41524809f06adf05bce2d83f514a84 100644 (file)
@@ -20,6 +20,13 @@ require 'net/ldap/dn'
 require 'timeout'
 
 class AuthSourceLdap < AuthSource
+  NETWORK_EXCEPTIONS = [
+    Net::LDAP::LdapError,
+    Errno::ECONNABORTED, Errno::ECONNREFUSED, Errno::ECONNRESET,
+    Errno::EHOSTDOWN, Errno::EHOSTUNREACH,
+    SocketError
+  ]
+
   validates_presence_of :host, :port, :attr_login
   validates_length_of :name, :host, :maximum => 60, :allow_nil => true
   validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_blank => true
@@ -45,7 +52,7 @@ class AuthSourceLdap < AuthSource
         return attrs.except(:dn)
       end
     end
-  rescue Net::LDAP::LdapError => e
+  rescue *NETWORK_EXCEPTIONS => e
     raise AuthSourceException.new(e.message)
   end
 
@@ -55,7 +62,7 @@ class AuthSourceLdap < AuthSource
       ldap_con = initialize_ldap_con(self.account, self.account_password)
       ldap_con.open { }
     end
-  rescue Net::LDAP::LdapError => e
+  rescue *NETWORK_EXCEPTIONS => e
     raise AuthSourceException.new(e.message)
   end
 
@@ -85,7 +92,7 @@ class AuthSourceLdap < AuthSource
       results << attrs
     end
     results
-  rescue Net::LDAP::LdapError => e
+  rescue *NETWORK_EXCEPTIONS => e
     raise AuthSourceException.new(e.message)
   end