[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#4783) ldap_sasl_bind() is not asynchronous



ando@sys-net.it wrote:
> fcusack@fcusack.com wrote:
>> But still you can do the bind async, and just close the fd on the client
>> side on timeout.  I don't see why connect() timeout can't be handled
>> the same way.  (ignoring the problem that there is no API call AFAICT
>> to just drop the connection)
>>   
> I'll note that there's been some interest in that area --- I loosely 
> have the same need (see 
> <http://www.openldap.org/lists/openldap-devel/200611/msg00000.html>) but 
> unfortunately it's not in my priority list, considering that it might 
> have relevant impact on the client library.

Eventually, this got on top of my priority list, and it's now 
implemented in HEAD.  One needs to:
  - set LDAP_OPT_NETWORK_TIMEOUT to a value greater than 0
  - set LDAP_OPT_CONNECT_ASYNC to TRUE
  - perform the first operation asynchronously (e.g. ldap_sasl_bind(3))

the library call might return LDAP_X_CONNECTING if poll(2)'ing after 
connect(2) didn't succeed yet and LDAP_OPT_NETWORK_TIMEOUT didn't expire 
yet.  In that case, the client should resubmit the request until it 
either succeeds or LDAP_OPT_NETWORK_TIMEOUT expires.

Note that, right now, there's no means to set LDAP_OPT_CONNECT_ASYNC 
other than via ldap_set_option(3), and none is foreseen, because only 
specially crafted clients would be able to handle LDAP_X_CONNECTING 
appropriately.

Please test.

p.



Ing. Pierangelo Masarati
OpenLDAP Core Team

SysNet s.n.c.
Via Dossi, 8 - 27100 Pavia - ITALIA
http://www.sys-net.it
------------------------------------------
Office:   +39.02.23998309
Mobile:   +39.333.4963172
Email:    pierangelo.masarati@sys-net.it
------------------------------------------