diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2020-03-12 12:45:52 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2020-04-17 12:38:52 +0200 |
commit | cc31c3827749e2eeb3437648226413742ffe7dcd (patch) | |
tree | e9a3aee401957e992d59285467305f0074490a4c /apps/user_ldap/lib/Proxy.php | |
parent | e8ddb4718cee824af3bb24cae247fe64d043a96a (diff) | |
download | nextcloud-server-cc31c3827749e2eeb3437648226413742ffe7dcd.tar.gz nextcloud-server-cc31c3827749e2eeb3437648226413742ffe7dcd.zip |
don't circulate with only one backend
- saves some overhead costs
- in some occasions saves LDAP requests
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap/lib/Proxy.php')
-rw-r--r-- | apps/user_ldap/lib/Proxy.php | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/apps/user_ldap/lib/Proxy.php b/apps/user_ldap/lib/Proxy.php index 3cf55f8cd58..09f4ac407d8 100644 --- a/apps/user_ldap/lib/Proxy.php +++ b/apps/user_ldap/lib/Proxy.php @@ -40,6 +40,8 @@ use OCA\User_LDAP\User\Manager; abstract class Proxy { private static $accesses = []; private $ldap = null; + /** @var bool */ + private $isSingleBackend; /** @var \OCP\ICache|null */ private $cache; @@ -139,6 +141,15 @@ abstract class Proxy { */ abstract public function getLDAPAccess($id); + abstract protected function activeBackends(): int; + + protected function isSingleBackend(): bool{ + if($this->isSingleBackend === null) { + $this->isSingleBackend = $this->activeBackends() === 1; + } + return $this->isSingleBackend; + } + /** * Takes care of the request to the User backend * @param string $id @@ -148,8 +159,10 @@ abstract class Proxy { * @return mixed, the result of the specified method */ protected function handleRequest($id, $method, $parameters, $passOnWhen = false) { - $result = $this->callOnLastSeenOn($id, $method, $parameters, $passOnWhen); - if ($result === $passOnWhen) { + if (!$this->isSingleBackend()) { + $result = $this->callOnLastSeenOn($id, $method, $parameters, $passOnWhen); + } + if (!isset($result) || $result === $passOnWhen) { $result = $this->walkBackends($id, $method, $parameters); } return $result; |