]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/abandon.c
Sync with 2.x
[openldap] / libraries / libldap / abandon.c
index 597ded2f8428ab726e4c5779c091f18293227d9f..fbb184722a5357553da576b82ea5873972c6a6ca 100644 (file)
@@ -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 );