[Pkg-owncloud-commits] [owncloud] 27/69: LDAP: attempt to connect to backup server again, if main server is not available. Fixes #18701

David Prévot taffit at moszumanska.debian.org
Wed Nov 11 02:04:04 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch stable8
in repository owncloud.

commit 86289d70f43f8fbc968f6fe03b6477fbecf7e136
Author: Arthur Schiwon <blizzz at owncloud.com>
Date:   Tue Nov 3 17:17:00 2015 +0100

    LDAP: attempt to connect to backup server again, if main server is not available. Fixes #18701
---
 apps/user_ldap/lib/connection.php | 51 ++++++++++++++++++++++++---------------
 1 file changed, 31 insertions(+), 20 deletions(-)

diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php
index f6b123b..3f3953b 100644
--- a/apps/user_ldap/lib/connection.php
+++ b/apps/user_ldap/lib/connection.php
@@ -526,30 +526,41 @@ class Connection extends LDAPUtility {
 										\OCP\Util::WARN);
 				}
 			}
-			if(!$this->configuration->ldapOverrideMainServer
-			   && !$this->getFromCache('overrideMainServer')) {
-				$this->doConnect($this->configuration->ldapHost,
-								 $this->configuration->ldapPort);
-				$bindStatus = $this->bind();
-				$error = $this->ldap->isResource($this->ldapConnectionRes) ?
-							$this->ldap->errno($this->ldapConnectionRes) : -1;
-			} else {
-				$bindStatus = false;
-				$error = null;
+
+			$bindStatus = false;
+			$error = null;
+			try {
+				if (!$this->configuration->ldapOverrideMainServer
+					&& !$this->getFromCache('overrideMainServer')
+				) {
+					$this->doConnect($this->configuration->ldapHost,
+						$this->configuration->ldapPort);
+					$bindStatus = $this->bind();
+					$error = $this->ldap->isResource($this->ldapConnectionRes) ?
+						$this->ldap->errno($this->ldapConnectionRes) : -1;
+				}
+				if($bindStatus === true) {
+					return $bindStatus;
+				}
+			} catch (\OC\ServerNotAvailableException $e) {
+				if(trim($this->configuration->ldapBackupHost) === "") {
+					throw $e;
+				}
 			}
 
 			//if LDAP server is not reachable, try the Backup (Replica!) Server
-			if((!$bindStatus && ($error !== 0))
+			if(    $error !== 0
 				|| $this->configuration->ldapOverrideMainServer
-				|| $this->getFromCache('overrideMainServer')) {
-					$this->doConnect($this->configuration->ldapBackupHost,
-									 $this->configuration->ldapBackupPort);
-					$bindStatus = $this->bind();
-					if(!$bindStatus && $error === -1) {
-						//when bind to backup server succeeded and failed to main server,
-						//skip contacting him until next cache refresh
-						$this->writeToCache('overrideMainServer', true);
-					}
+				|| $this->getFromCache('overrideMainServer'))
+			{
+				$this->doConnect($this->configuration->ldapBackupHost,
+								 $this->configuration->ldapBackupPort);
+				$bindStatus = $this->bind();
+				if($bindStatus && $error === -1) {
+					//when bind to backup server succeeded and failed to main server,
+					//skip contacting him until next cache refresh
+					$this->writeToCache('overrideMainServer', true);
+				}
 			}
 			return $bindStatus;
 		}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list