aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2023-03-13 16:05:41 +0100
committerCôme Chilliet <come.chilliet@nextcloud.com>2023-03-13 16:05:41 +0100
commitd82d6df646e052a10540779923ca245d3dd105bd (patch)
tree6c1642125d0a424c50be283b2b5c873fa5d26579 /apps/user_ldap/lib
parent4b79e75072f59d2ada4a95413e730a14fe461e9c (diff)
downloadnextcloud-server-d82d6df646e052a10540779923ca245d3dd105bd.tar.gz
nextcloud-server-d82d6df646e052a10540779923ca245d3dd105bd.zip
Do not send a pagination control with size = 0 if cookie is empty
It only makes sense to send a pagination control with size 0 with a cookie to abandon a paged search. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'apps/user_ldap/lib')
-rw-r--r--apps/user_ldap/lib/LDAP.php22
1 files changed, 13 insertions, 9 deletions
diff --git a/apps/user_ldap/lib/LDAP.php b/apps/user_ldap/lib/LDAP.php
index 5730907b653..41a6f651f3b 100644
--- a/apps/user_ldap/lib/LDAP.php
+++ b/apps/user_ldap/lib/LDAP.php
@@ -190,14 +190,18 @@ class LDAP implements ILDAPWrapper {
* {@inheritDoc}
*/
public function search($link, $baseDN, $filter, $attr, $attrsOnly = 0, $limit = 0, int $pageSize = 0, string $cookie = '') {
- $serverControls = [[
- 'oid' => LDAP_CONTROL_PAGEDRESULTS,
- 'value' => [
- 'size' => $pageSize,
- 'cookie' => $cookie,
- ],
- 'iscritical' => false,
- ]];
+ if ($pageSize > 0 || $cookie !== '') {
+ $serverControls = [[
+ 'oid' => LDAP_CONTROL_PAGEDRESULTS,
+ 'value' => [
+ 'size' => $pageSize,
+ 'cookie' => $cookie,
+ ],
+ 'iscritical' => false,
+ ]];
+ } else {
+ $serverControls = [];
+ }
$oldHandler = set_error_handler(function ($no, $message, $file, $line) use (&$oldHandler) {
if (strpos($message, 'Partial search results returned: Sizelimit exceeded') !== false) {
@@ -387,7 +391,7 @@ class LDAP implements ILDAPWrapper {
if ($this->isResource($this->curArgs[0])) {
$resource = $this->curArgs[0];
} elseif (
- $functionName === 'ldap_search'
+ $functionName === 'ldap_search'
&& is_array($this->curArgs[0])
&& $this->isResource($this->curArgs[0][0])
) {