]> source.dussan.org Git - nextcloud-server.git/commitdiff
LDAP: better detect timeouts. do not try to reconnect. do not try to bind when connec...
authorArthur Schiwon <blizzz@owncloud.com>
Wed, 6 Feb 2013 13:32:00 +0000 (14:32 +0100)
committerArthur Schiwon <blizzz@owncloud.com>
Wed, 6 Feb 2013 13:32:00 +0000 (14:32 +0100)
apps/user_ldap/lib/connection.php

index 38b2b131e50db41e60aaea83f9a2fbea7a30bd2b..9b440da4f9f441c430f96bdf9f8e48563a4b03b7 100644 (file)
@@ -528,7 +528,7 @@ class Connection {
                        if(!$this->config['ldapOverrideMainServer'] && !$this->getFromCache('overrideMainServer')) {
                                $this->doConnect($this->config['ldapHost'], $this->config['ldapPort']);
                                $bindStatus = $this->bind();
-                               $error = ldap_errno($this->ldapConnectionRes);
+                               $error = is_resource($this->ldapConnectionRes) ? ldap_errno($this->ldapConnectionRes) : -1;
                        } else {
                                $bindStatus = false;
                                $error = null;
@@ -552,6 +552,9 @@ class Connection {
        }
 
        private function doConnect($host, $port) {
+               if(empty($host)) {
+                       return false;
+               }
                $this->ldapConnectionRes = ldap_connect($host, $port);
                if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_PROTOCOL_VERSION, 3)) {
                        if(ldap_set_option($this->ldapConnectionRes, LDAP_OPT_REFERRALS, 0)) {
@@ -569,9 +572,13 @@ class Connection {
                if(!$this->config['ldapConfigurationActive']) {
                        return false;
                }
-               $ldapLogin = @ldap_bind($this->getConnectionResource(), $this->config['ldapAgentName'], $this->config['ldapAgentPassword']);
+               $cr = $this->getConnectionResource();
+               if(!is_resource($cr)) {
+                       return false;
+               }
+               $ldapLogin = @ldap_bind($cr, $this->config['ldapAgentName'], $this->config['ldapAgentPassword']);
                if(!$ldapLogin) {
-                       \OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($this->ldapConnectionRes) . ': ' . ldap_error($this->ldapConnectionRes), \OCP\Util::ERROR);
+                       \OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($cr) . ': ' . ldap_error($cr), \OCP\Util::ERROR);
                        $this->ldapConnectionRes = null;
                        return false;
                }