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

Re: (ITS#4420) Hanging CLOSE_WAIT connections in ldap-backend

On Fri, 2006-03-03 at 10:36 +0000, ando@sys-net.it wrote:
> On Fri, 2006-03-03 at 10:20 +0000, hyc@symas.com wrote:
> > I believe the code now in back-ldap is broken. If you do a "grep 
> > do_retry" in the back-ldap source you'll note that some of the modules 
> > are testing for LDAP_UNAVAILABLE and some are testing for 
> > LDAP_SERVER_DOWN. This inconsistency points to another logic problem - 
> > the LDAP_UNAVAILABLE code should only be present after mapping has 
> > occurred, but the retry needs to be invoked before mapping. Note that 
> > ldap_back_op_result will send a result code to the client, so even if 
> > back-ldap actually retries the operation, the client will have already 
> > gone away.
> I'm not so sure it's broken.  I haven't gone thru all of it yet, but as
> far as search is concerned, it seems to me that the right value is
> checked before and after mapping, and that ldap_back_op_result() is only
> called when retry is no longer an option.  I'll investigate a bit more
> carefully; I might add some #ifdef'd code to test those error
> conditions.

I've walked with gdb inside back-ldap code, and the only case in which
it seems to occur that a 52 is returned to the client is when
ldap_search_ext() returns -1 and ldap_back_retry() fails for the same
reason.  As per why ldap_back_retry() fails I have no clue yet; I caused
those failures by mucking with the return codes of functions that were
in fact succeeding.


Ing. Pierangelo Masarati
Responsabile Open Solution
OpenLDAP Core Team

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