avoid unnecessary recursion

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
This commit is contained in:
Arthur Schiwon 2017-10-25 17:23:42 +02:00
parent fb40afc4d4
commit 3628d4d65d
No known key found for this signature in database
GPG Key ID: 7424F1874854DF23
2 changed files with 10 additions and 11 deletions

View File

@ -1853,20 +1853,19 @@ class Access extends LDAPUtility implements IUserTools {
$cookie = $this->getPagedResultCookie($base, $filter, $limit, $offset);
if(empty($cookie) && $cookie !== "0" && ($offset > 0)) {
// no cookie known, although the offset is not 0. Maybe cache run out. We need
// to start all over *sigh* (btw, Dear Reader, did you know LDAP paged
// searching was designed by MSFT?)
// Lukas: No, but thanks to reading that source I finally know!
// '0' is valid, because 389ds
$reOffset = ($offset - $limit) < 0 ? 0 : $offset - $limit;
//a bit recursive, $offset of 0 is the exit
\OCP\Util::writeLog('user_ldap', 'Looking for cookie L/O '.$limit.'/'.$reOffset, \OCP\Util::INFO);
$this->search($filter, array($base), $attr, $limit, $reOffset, true);
// no cookie known from a potential previous search. We need
// to start from 0 to come to the desired page. cookie value
// of '0' is valid, because 389ds
$reOffset = 0;
while($reOffset < $offset) {
$this->search($filter, array($base), $attr, $limit, $reOffset, true);
$reOffset += $limit;
}
$cookie = $this->getPagedResultCookie($base, $filter, $limit, $offset);
//still no cookie? obviously, the server does not like us. Let's skip paging efforts.
// '0' is valid, because 389ds
//TODO: remember this, probably does not change in the next request...
if(empty($cookie) && $cookie !== '0') {
// '0' is valid, because 389ds
$cookie = null;
}
}

View File

@ -122,7 +122,7 @@ class Connection extends LDAPUtility {
/**
* @param string $name
* @return bool|mixed|void
* @return bool|mixed
*/
public function __get($name) {
if(!$this->configured) {