>> The timeouts are per request. A client must send a distinct request
>> to retrieve a page, there is no overarching time limit for all of the pages.

And the OPT_TIMEOUT value I am using with python-ldap would be applicable to each separate request, right ?
I need not use the 'timeout' parameters from search() and result() APIs, correct ?
The reason in my case the search was running for ~15 minutes would be that client would be receiving some data in each individual request ? Unfortunately I didn't collect the network trace to confirm this :(

The TIMELIMIT value won't help here


On Fri, 16 Apr, 2021, 8:52 PM Howard Chu, <hyc@symas.com> wrote:
varun mittal wrote:
>>The timeout is a per-request timeout.  Isn't doing paged requests
>> explicitly about making multiple requests, with possibly semi-arbitrary
>> delays by the client between them, but each of which therefore gets its
>> own shot at the timeout?
>
> That is what I struggling with to find some clear documentation on this.
> Should the TIMEOUT value suffice, or I need to use TIMELIMIT with paged searching. Or use timeout values with search_ext() and result() APIs
> There are multiple timeouts at different levels.

Philip is correct. The timeouts are per request. A client must send a distinct request
to retrieve a page, there is no overarching time limit for all of the pages.
>
> On Fri, Apr 16, 2021 at 3:52 AM Philip Guenther <pguenther@proofpoint.com <mailto:pguenther@proofpoint.com>> wrote:
>
>     The timeout is a per-request timeout.  Isn't doing paged requests
>     explicitly about making multiple requests, with possibly semi-arbitrary
>     delays by the client between them, but each of which therefore gets its
>     own shot at the timeout?
>
>     Philip Guenther
>
>     On Thu, 15 Apr 2021, varun mittal wrote:
>     > Any inputs on this one ?
>     >
>     > The client timeout parameter works for individual search page or the entire
>     > time period of the search, if there are multiple pages ?
>     >
>     >
>     > On Fri, Apr 2, 2021 at 2:07 PM varun mittal <vmittal05@gmail.com <mailto:vmittal05@gmail.com>> wrote:
>     >
>     > > I am using openldap-2.4.39 on CentOS 7, to query my AD server, with
>     > > python-ldap wrapper
>     > >
>     > > I set the following scheme:
>     > >
>     > > ldap.set_option(ldap.OPT_NETWORK_TIMEOUT, 30)
>     > > ldap.set_option(ldap.OPT_TIMEOUT, 120)
>     > > conn = ldap.initialize(ldap://server-ip)
>     > >
>     > > Using 3 types of queries - synchronous search_s(), asynchronous with and
>     > > without paging search_ext()
>     > >
>     > > I am not using any timeout in the _ext method or the result3() methods
>     > >
>     > > One of my python client LDAP searches(asynchronous with paging) took about
>     > > 14 minutes to complete, in the customer environment. Eventually, the search
>     > > was successful.
>     > >
>     > > Looking at the documentation, I am not sure which timeout value would be
>     > > applicable here.
>     > >
>     > > I thought setting OPT_TIMEOUT should suffice for all kinds of searches.
>     > >
>     > > And the strange thing is that the similar query, but synchronous(
>     > > ldap_search_ext_s) from my C client failed within 120 seconds. This is
>     > > the default AD server timelimit. The C application didn't specify any
>     > > timeouts
>     > >
>     > > What am I missing here?
>     > >
>     >
>


--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/