[SAMBA4] Make paged results the default in ldb_ildap

simo idra at samba.org
Mon Aug 14 16:20:16 GMT 2006


On Mon, 2006-08-14 at 16:37 +1000, Andrew Bartlett wrote:
> On Mon, 2006-08-14 at 01:49 -0400, simo wrote:

> > We can do this, but I want it done right.
> > 
> > The problem with the paged control is that it requires the caller to
> > make multiple calls.
> 
> Why can't the backend re-issue the request for the remaining attributes?
> That way, the caller only does one call, and the async code works
> exactly how we want:  it returns the results when available.

Because it will make the module much more complex, and will add the kind
of smartness that lead to surprises later on when you want to control
closely what the backend is doing.

> > Also we cannot use the control when it is not supported by the remote
> > server.
> 
> Indeed.  But I presume we don't need to mark it critical?

I think it is better to check beforehand so that you now if you have to
enter a call loop to munge the data, or use the simple way.

> > So the right way to do it is to do it inside ldb_search(), and to not
> > repeat a rootDSE search at every ldb_search() we need to keep the
> > information about whether the server supports paged results or not
> > somewhere. In theory the right place would be the ldb backend, but then
> > we would need a way to query it to know whether or not we are allowed to
> > use the paged search control.
> 
> The ldb_ildap backend already does a rootDSE search at startup, to find
> out other things.  Looking for that control would not be particularly
> painful.

I know, but this is not a good reason to push for this stuff to be put
in there.

> > What we can't do, is to query the rootDSE at each search, or forcibly
> > add the paged control at any serach in the ldb backend, because when you
> > use the ldb_request(0 call it means you want complete control over what
> > happens on the wire, you don't want "surprises".
> 
> I'm happy to have a 'no supprises' flag, to turn this off, or an
> 'automagic' flag to turn this on, or a module that sets this, or
> something.  But it would be pointless if the ldb_request interface,
> which is what an async winbind would use doesn't do the 'right thing' by
> default.

Ok, I think this is a perfect match for our first "client side" module.
I can make it up if you want.

> > So provided we find a decent method to make ldb_search() know when to
> > use the paged results control I am ok adding the code to do it there
> > automatically.
> 
> I really think this belongs in the ldb_ildap backend.  But talk without
> code is pointless, so I'll try and code something up.

If you can do it as a module to be loaded just before ldb_ildap, I think
we will get the best way to address this problem.

Simo.

-- 
Simo Sorce
Samba Team GPL Compliance Officer
email: idra at samba.org
http://samba.org



More information about the samba-technical mailing list