From: Jean-Philippe Lang Date: Sat, 7 Nov 2015 08:27:27 +0000 (+0000) Subject: Rescue network level errors with LDAP auth (#21137). X-Git-Tag: 3.2.0~75 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8123006bb3a43c3dd1cab8f849c51b79362c6b3a;p=redmine.git Rescue network level errors with LDAP auth (#21137). Patch by Holger Just. git-svn-id: http://svn.redmine.org/redmine/trunk@14808 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/auth_source_ldap.rb b/app/models/auth_source_ldap.rb index 6fb43d44a..d5a8550c7 100644 --- a/app/models/auth_source_ldap.rb +++ b/app/models/auth_source_ldap.rb @@ -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