]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/abandon.c
Update for new password codes for MSVC5
[openldap] / libraries / libldap / abandon.c
index b2b2b83009c7133e2642bf83760c1efc8de74426..0541dd93cc6e34934c65d02f0bbd62bf756de469 100644 (file)
@@ -1,3 +1,4 @@
+/* $OpenLDAP$ */
 /*
  * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  *  abandon.c
  */
 
+/*
+ * An abandon request looks like this:
+ *     AbandonRequest ::= MessageID
+ */
+
 #include "portable.h"
 
 #include <stdio.h>
-#include <stdlib.h>
+
+#include <ac/stdlib.h>
 
 #include <ac/socket.h>
 #include <ac/string.h>
@@ -22,8 +29,8 @@
 
 static int do_abandon LDAP_P((
        LDAP *ld,
-       int origid,
-       int msgid,
+       ber_int_t origid,
+       ber_int_t msgid,
        LDAPControl **sctrls,
        LDAPControl **cctrls));
 
@@ -78,29 +85,22 @@ ldap_abandon( LDAP *ld, int msgid )
 static int
 do_abandon(
        LDAP *ld,
-       int origid,
-       int msgid,
+       ber_int_t origid,
+       ber_int_t msgid,
        LDAPControl **sctrls,
        LDAPControl **cctrls)
 {
        BerElement      *ber;
        int             i, err, sendabandon;
+       ber_int_t *old_abandon;
        Sockbuf         *sb;
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
        LDAPRequest     *lr;
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
-
-       /*
-        * An abandon request looks like this:
-        *      AbandonRequest ::= MessageID
-        */
 
        Debug( LDAP_DEBUG_TRACE, "do_abandon origid %d, msgid %d\n",
                origid, msgid, 0 );
 
        sendabandon = 1;
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
        /* find the request that we are abandoning */
        for ( lr = ld->ld_requests; lr != NULL; lr = lr->lr_next ) {
                if ( lr->lr_msgid == msgid ) {  /* this message */
@@ -123,7 +123,6 @@ do_abandon(
                        sendabandon = 0;
                }
        }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
        if ( ldap_msgdelete( ld, msgid ) == 0 ) {
                ld->ld_errno = LDAP_SUCCESS;
@@ -133,20 +132,20 @@ do_abandon(
        err = 0;
        if ( sendabandon ) {
                /* create a message to send */
-               if ( (ber = ldap_alloc_ber_with_options( ld )) == NULLBER ) {
+               if ( (ber = ldap_alloc_ber_with_options( ld )) == NULL ) {
                        err = -1;
                        ld->ld_errno = LDAP_NO_MEMORY;
 
                } else {
 #ifdef LDAP_CONNECTIONLESS
                        if ( ld->ld_cldapnaddr > 0 ) {
-                               err = ber_printf( ber, "{isti", /* leave open '}' */
+                               err = ber_printf( ber, "{isti", /* '}' */
                                    ++ld->ld_msgid, ld->ld_cldapdn,
                                    LDAP_REQ_ABANDON, msgid );
                        } else
 #endif /* LDAP_CONNECTIONLESS */
                        {
-                               err = ber_printf( ber, "{iti",  /* leave open '}' */
+                               err = ber_printf( ber, "{iti",  /* '}' */
                                        ++ld->ld_msgid,
                                    LDAP_REQ_ABANDON, msgid );
                        }
@@ -164,7 +163,7 @@ do_abandon(
 
                                } else {
                                        /* close '{' */
-                                       err = ber_printf( ber, "}" );
+                                       err = ber_printf( ber, /*{*/ "}" );
 
                                        if( err == -1 ) {
                                                /* encoding error */
@@ -178,12 +177,9 @@ do_abandon(
 
                        } else {
                                /* send the message */
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
                                if ( lr != NULL ) {
                                        sb = lr->lr_conn->lconn_sb;
-                               } else
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
-                               {
+                               } else {
                                        sb = &ld->ld_sb;
                                }
 
@@ -197,7 +193,6 @@ do_abandon(
                }
        }
 
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS
        if ( lr != NULL ) {
                if ( sendabandon ) {
                        ldap_free_connection( ld, lr->lr_conn, 0, 1 );
@@ -206,25 +201,24 @@ do_abandon(
                        ldap_free_request( ld, lr );
                }
        }
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_REFERRALS */
 
+       i = 0;
+       if ( ld->ld_abandoned != NULL ) {
+               for ( ; ld->ld_abandoned[i] != -1; i++ )
+                       ;       /* NULL */
+       }
+
+       old_abandon = ld->ld_abandoned;
 
+       ld->ld_abandoned = (ber_int_t *) LDAP_REALLOC( (char *)
+               ld->ld_abandoned, (i + 2) * sizeof(ber_int_t) );
+               
        if ( ld->ld_abandoned == NULL ) {
-               if ( (ld->ld_abandoned = (int *) malloc( 2 * sizeof(int) ))
-                   == NULL ) {
-                       ld->ld_errno = LDAP_NO_MEMORY;
-                       return( ld->ld_errno );
-               }
-               i = 0;
-       } else {
-               for ( i = 0; ld->ld_abandoned[i] != -1; i++ )
-                       ;       /* NULL */
-               if ( (ld->ld_abandoned = (int *) realloc( (char *)
-                   ld->ld_abandoned, (i + 2) * sizeof(int) )) == NULL ) {
-                       ld->ld_errno = LDAP_NO_MEMORY;
-                       return( ld->ld_errno );
-               }
+               ld->ld_abandoned = old_abandon;
+               ld->ld_errno = LDAP_NO_MEMORY;
+               return( ld->ld_errno );
        }
+
        ld->ld_abandoned[i] = msgid;
        ld->ld_abandoned[i + 1] = -1;