LDAP: better detect timeouts. do not try to reconnect. do not try to bind when connection failed. makes ownCloud more responsive, esp. with multiple server connections configured
This commit is contained in:
parent
e122fdbcb6
commit
781d247b39
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue