Re: ldap_simple_bind blocks in Open Mode when the DS is in hang state

Anton Bobrov <[email protected]> Mon, 11 May 2009 12:31:02 +0200
Newsgroups gmane.comp.mozilla.devel.directory
Organization Sun Microsystems, Inc.
Message-ID <[email protected]>
you just pause server process execution with SIGSTOP but OS will keep
its files/sockets open and simply enqueue the data. connect and alike
will always succeed, recv and alike will block, on the client side so
none of the options you are setting will have any effect in this case.
the only thing you can do is to use async API and some timeout value
on LDAP protocol/operations level eg if you are not getting a response
to certain LDAP operation in 30 seconds bail out and return an error.

denish patel wrote:
> The behaviour I expect is that since the DS has been stopped & therefore
> would not be responding,
> the ldap_simple_bind() should return with a -1.
> 
> Thanks,
> Denish
> 
> On Mon, May 11, 2009 at 2:34 PM, Anton Bobrov <[email protected]> wrote:
> 
>> what behavior do you expect in this case ? why do you think it
>> should timeout when you send SIGSTOP to the server process ?
>>
>>
>> denish patel wrote:
>>
>>> Hi All,
>>>
>>>  I have a simple LDAP Client that uses the Mozilla LDAP SDK.
>>> This client simulates how our software communicates with the Directory
>>> Server (OVD / Sun DS).
>>>
>>> Here are the steps that I follow:
>>>
>>>  1) ldap_init
>>>  2) ldap_set_option - set options -
>>>    a) Version
>>>    b) LDAP_X_OPT_CONNECT_TIMEOUT
>>>    c) LDAP_OPT_REFERRALS to LDAP_OPT_ON
>>>    d) LDAP_OPT_SIZELIMIT
>>>    e) LDAP_OPT_TIMELIMIT
>>>    f) LDAP_OPT_NETWORK_TIMEOUT (Unsuccessful even when the DS is up)
>>> (added
>>> later)
>>>    g) PRLDAP_OPT_IO_MAX_TIMEOUT (Unsuccessful even when the DS is up)
>>> (added later)
>>> 3) ldap_simple_bind
>>> 4) query the Directory Server (DS)
>>>
>>> The client works perfectly when the DS is up.
>>> However when the DS is given a STOP signal, the Client gets blocked on the
>>> bind call.
>>>
>>> I have tried setting the TCP Timeout to a low value, but even that did not
>>> work.
>>>
>>> Is there anything more that I need to do?
>>>
>>> Thanks,
>>> Denish
>>>
>>
>