From: Kurt Zeilenga Date: Tue, 17 Oct 2000 21:46:42 +0000 (+0000) Subject: ITS#837: fix server down abandon bug X-Git-Tag: OPENLDAP_REL_ENG_2_0_7~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e786b986d658f1dc8f028cda8bdb6e9e355ce5fa;p=thirdparty%2Fopenldap.git ITS#837: fix server down abandon bug --- diff --git a/CHANGES b/CHANGES index 9cc37b7d42..416cc7bc8f 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,7 @@ OpenLDAP 2.0 Change Log OpenLDAP 2.0.X Engineering Fixed -lldap TLS data ready bug (ITS#821) + Fixed -lldap abandon unsent op bug (ITS#837) Fixed slapd spasswd mutex bug Fixed slapd ACL nameuid bug Fixed slapd SASL layerring bug diff --git a/libraries/libldap/abandon.c b/libraries/libldap/abandon.c index 597ded2f84..fbb184722a 100644 --- a/libraries/libldap/abandon.c +++ b/libraries/libldap/abandon.c @@ -131,12 +131,18 @@ do_abandon( err = 0; if ( sendabandon ) { - /* create a message to send */ - if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) { + if( ber_sockbuf_ctrl( ld->ld_sb, LBER_SB_OPT_GET_FD, NULL ) == -1 ) { + /* not connected */ + err = -1; + ld->ld_errno = LDAP_SERVER_DOWN; + + } else if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) { + /* BER element alocation failed */ err = -1; ld->ld_errno = LDAP_NO_MEMORY; } else { + /* create a message to send */ err = ber_printf( ber, "{iti", /* '}' */ ++ld->ld_msgid, LDAP_REQ_ABANDON, msgid );