[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.
p.
Ing. Pierangelo Masarati
Responsabile Open Solution
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
------------------------------------------