]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/abandon.c
Sync with 2.x
[openldap] / libraries / libldap / abandon.c
index 04066e48824abec585268cf044208959c5ef0ba1..fbb184722a5357553da576b82ea5873972c6a6ca 100644 (file)
@@ -1,5 +1,6 @@
+/* $OpenLDAP$ */
 /*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -130,24 +131,21 @@ 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 {
-#ifdef LDAP_CONNECTIONLESS
-                       if ( ld->ld_cldapnaddr > 0 ) {
-                               err = ber_printf( ber, "{isti", /* '}' */
-                                   ++ld->ld_msgid, ld->ld_cldapdn,
-                                   LDAP_REQ_ABANDON, msgid );
-                       } else
-#endif /* LDAP_CONNECTIONLESS */
-                       {
-                               err = ber_printf( ber, "{iti",  /* '}' */
-                                       ++ld->ld_msgid,
-                                   LDAP_REQ_ABANDON, msgid );
-                       }
+                       /* create a message to send */
+                       err = ber_printf( ber, "{iti",  /* '}' */
+                               ++ld->ld_msgid,
+                           LDAP_REQ_ABANDON, msgid );
 
                        if( err == -1 ) {
                                /* encoding error */
@@ -162,7 +160,7 @@ do_abandon(
 
                                } else {
                                        /* close '{' */
-                                       err = ber_printf( ber, /*{*/ "}" );
+                                       err = ber_printf( ber, /*{*/ "N}" );
 
                                        if( err == -1 ) {
                                                /* encoding error */
@@ -179,7 +177,7 @@ do_abandon(
                                if ( lr != NULL ) {
                                        sb = lr->lr_conn->lconn_sb;
                                } else {
-                                       sb = &ld->ld_sb;
+                                       sb = ld->ld_sb;
                                }
 
                                if ( ber_flush( sb, ber, 1 ) != 0 ) {