Okay, before I file a bug report, I just want to make sure that what I'm seeing is not the way it's meant to be.
When running:
$ ldapsearch -x -b dc=bofh,dc=ca -h ldap-test -E pr=2 '(objectclass=*)' dn
I see:
[....] # search result search: 2 result: 0 Success control: 1.2.840.113556.1.4.319 false MAkCAQAEBAIAAAA= control: 1.2.840.113556.1.4.319 false MAUCAQAEAA== control: 1.2.840.113556.1.4.319 false MAkCAQAEBP////8= Press [size] Enter for the next {2|size} entries.
... in other words, one control: reponse for each backend in the tree. And assuming that the last field is the Base64-encoded value of the cursor/lastid, some of those values look to be garbage (0xffffffff and so on). If the client software is taking the wrong value and repeating it back when asking for the next page, that would explain why I'm being told the page value is invalid.
Can anyone else confirm this behaviour with 2.3.38?