[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: question on ldap_unbind_ext_s
Howard, thanks for the quick reply.
ldap_unbind()calls ldap_unbind_ext_s(ld, NULL, NULL). So the result will be the same.
R.K
-----Original Message-----
From: Howard Chu [mailto:hyc@symas.com]
Sent: Tuesday, September 9, 2014 11:25 AM
To: Aditham, Radhakrishna; openldap-technical@openldap.org
Subject: Re: question on ldap_unbind_ext_s
Aditham, Radhakrishna wrote:
> Hi,
>
> We have a long running server that tries to get a new LDAP handle if
> the current handle becomes invalid (LDAP_SERVER_DOWN error, etc).
>
> However if I call ldap_unbind_ext_s() on the old handle to release it,
> it hangs with the following stack:
>
> (gdb) bt
>
> #0 0x000000080166935c in read () at read.S:2
>
> #1 0x00000008014748f0 in __read (fd=68, buf=0x803293003, nbytes=5) at
> /.automount/nfs.panwest.panasas.com/root/sb10/hlewis/hlewis-sb10-pione
> er-ldap/src/freebsd-c/lib/libthr/thread/thr_syscalls.c:384
>
> #2 0x0000000802c715d2 in sb_stream_read (sbiod=0x8088070d0,
> buf=0x803293003,
> len=5) at
> /.automount/nfs.panwest.panasas.com/root/sb10/hlewis/hlewis-sb10-pione
> er-ldap/src/likewise/openldap/libraries/liblber/sockbuf.c:493
>
> #3 0x0000000802c7207e in sb_debug_read (sbiod=0x803291220,
> buf=0x803293003,
> len=5) at
> /.automount/nfs.panwest.panasas.com/root/sb10/hlewis/hlewis-sb10-pione
> er-ldap/src/likewise/openldap/libraries/liblber/sockbuf.c:827
>
> #4 0x0000000802356971 in tlso_bio_read (b=0x803205400,
> buf=0x803293003 "\027\003\001", len=5) at tls_o.c:687
>
> #5 0x000000080252c2df in BIO_read () from /usr/lib/libcrypto.so.1.0.0
>
> #6 0x0000000802eb9f01 in ssl3_read_n () from /usr/lib/libssl.so.1.0.0
>
> #7 0x0000000802eba3ce in ssl3_read_bytes () from
> /usr/lib/libssl.so.1.0.0
>
> #8 0x0000000802eb67ac in ssl3_shutdown () from
> /usr/lib/libssl.so.1.0.0
>
> #9 0x0000000802356cf6 in tlso_sb_close (sbiod=0x803291250) at
> tls_o.c:808
>
> #10 0x0000000802c71253 in ber_int_sb_close (sb=0x803291160) at
> /.automount/nfs.panwest.panasas.com/root/sb10/hlewis/hlewis-sb10-pione
> er-ldap/src/likewise/openldap/libraries/liblber/sockbuf.c:383
>
> #11 0x000000080233d625 in ldap_free_connection (ld=0x804c48c00,
> lc=0x8088080f0, force=1, unbind=1) at request.c:769
>
> #12 0x000000080232ffa2 in ldap_ld_free (ld=0x804c48c00, close=1,
> sctrls=0x0,
> cctrls=0x0) at unbind.c:93
>
> #13 0x000000080232fe8b in ldap_unbind_ext (ld=0x804c48c00, sctrls=0x0,
> cctrls=0x0) at unbind.c:52
>
> #14 0x000000080232fec5 in ldap_unbind_ext_s (ld=0x804c48c00,
> sctrls=0x0,
> cctrls=0x0) at unbind.c:61
>
> ......
>
> I want to make sure that there are memory leaks etc, hence the attempt
> to release the invalid handle.
>
> Question: What is the best or correct way to release an invalid LDAP handle?
ldap_unbind is the correct way. Looks like a bug in OpenSSL; if the connection is gone already it should not be trying to read from it.
>
> Appreciate any help.
>
> Thanks
>
> R.K. Aditham
>
--
-- Howard Chu
CTO, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc/
Chief Architect, OpenLDAP http://www.openldap.org/project/