Hello All!

So I have a simple search using page control via response cookies.

But for some strange reason, it just keeps searching as if it’s not seeing its 
own page cookie.
I was under the impression that:
   my ($resp)  = $search->control( LDAP_CONTROL_PAGED )  or last;

would return the number of results coming back from my paged query.  Under a 
debugger, I see this:

main::get_from_ldap(./generic_audit.pl:82):
82:           my ($resp)  = $search->control( LDAP_CONTROL_PAGED )  or last;
  DB<2> n
main::get_from_ldap(./generic_audit.pl:83):
83:           $cookie    = $resp->cookie or last;
  DB<2> print Dumper $resp
$VAR1 = bless( {
                 'value' => '0��

                                ����}&u�6��`�f)�Sm�r���ұב��ChO���'i���C
����c���IK���
~$����
        �!�����INDEX_00000000�
        �
        
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������',
                 'type' => '1.2.840.113556.1.4.319',
                 'raw' => undef
               }, 'Net::LDAP::Control::Paged' );

I’m a bit confused.

Can someone point out my error here?

Thanks All!

--Dan


My snippet (mostly lifted from the example):

use Net::LDAP;
use Net::LDAP::Control::Paged;
use Net::LDAP::Constant qw( LDAP_CONTROL_PAGED );

$ldap = AD::ldap_connect(…) unless $ldap;
my $page = Net::LDAP::Control::Paged->new( size => 900 );

sub get_from_ldap {
   my $filter = shift;
   my @entries;
   my $cookie;
   my @sargs = ( base        => $base_dn,
              scope       => 'sub',
              filter      => $filter,
              control     => [ $page ] );

   while(1) {
      my $search = $ldap->search(@sargs);
      # todo add check for $search->code to detect fail
      push(@entries,$search->entries);

      $search->code and last;
      my ($resp)  = $search->control( LDAP_CONTROL_PAGED )  or last;
      $cookie    = $resp->cookie or last;

      # reset cookie in paged control
        $page->cookie($cookie);
   }

   # clean up if last – probably don’t really have to do this but…
   if ($cookie) {
      $page->cookie($cookie);
      $page->size(0);
      $ldap->search(@sargs);
   }
   return (@entries);
}

my @entries = get_from_ldap(‘objectclass=user’);

…

Reply via email to