Dieter Kluenter wrote:
Hi,
I am experimenting with server side sorting and virtual list
view. While SSS does what it should do, vlv provides some
headaches. Although sss control and vlv control are passed to the
server, I get following error:
,----[ slapd debug output ]
| => get_ctrls: oid="1.2.840.113556.1.4.473" (critical)
| => get_ctrls: oid="2.16.840.1.113730.3.4.9" (critical)
|<= get_ctrls: n=2 rc=2 err="vlv control value is absent"
`----
What kind of vlv control value is missing?
My vlv object, written in perl, is:
,----[ vlv object ]
| $vlv = Net::LDAP::Control::VLV->new(
| after => 1,
| before => 0,
| content => 0,
| offset => 1,
| critical => 'TRUE',
| );
`----
The error message indicates that none of the after/before/content/offset
parameters are present in the control that the server received. You should
probably start by looking at the packet debug output on slapd to see what it
actually received. I suspect Net::LDAP is not generating this control correctly.
You can also test with ldapsearch. This control parsing stuff is all done
generically by the slapd frontend and it's known to be correct since OpenLDAP
2.0 days...
my sss object looks like
,----[ sss object ]
| $sort = Net::LDAP::Control::Sort->new(
| order => 'sn:2.5.13.3',
| critical => 'TRUE',
| );
`----
my search object:
,----[ search object ]
| my @args = (
| base => 'ou=benchmark,o=avci,c=de',
| scope => 'one',
| attrs => [ "$attrs[0]","$attrs[1]","$attrs[2]" ]);
| filter => $filter,
| control => [ $sort, $vlv ],
| );
| $msg = $ldap->search( @args );
`----
-Dieter
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/