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', | ); `----
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
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
openldap-software@openldap.org