diff --git a/apps/user_ldap/lib/Access.php b/apps/user_ldap/lib/Access.php index b6674cf033..bbf0716509 100644 --- a/apps/user_ldap/lib/Access.php +++ b/apps/user_ldap/lib/Access.php @@ -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; } } diff --git a/apps/user_ldap/lib/Connection.php b/apps/user_ldap/lib/Connection.php index 3350dd6a5c..9e84cbde35 100644 --- a/apps/user_ldap/lib/Connection.php +++ b/apps/user_ldap/lib/Connection.php @@ -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) {