X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fabandon.c;h=0541dd93cc6e34934c65d02f0bbd62bf756de469;hb=53da7b6cda5429cdd7996f6407e2eb883d142f6c;hp=b9d666eb447138bb594e9fd0174944072892b9aa;hpb=22d98c85c3ece96dd2e3d9b76195973d0639cd49;p=openldap diff --git a/libraries/libldap/abandon.c b/libraries/libldap/abandon.c index b9d666eb44..0541dd93cc 100644 --- a/libraries/libldap/abandon.c +++ b/libraries/libldap/abandon.c @@ -1,3 +1,4 @@ +/* $OpenLDAP$ */ /* * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file @@ -9,10 +10,16 @@ * abandon.c */ +/* + * An abandon request looks like this: + * AbandonRequest ::= MessageID + */ + #include "portable.h" #include -#include + +#include #include #include @@ -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,21 +85,17 @@ 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; LDAPRequest *lr; - /* - * An abandon request looks like this: - * AbandonRequest ::= MessageID - */ - Debug( LDAP_DEBUG_TRACE, "do_abandon origid %d, msgid %d\n", origid, msgid, 0 ); @@ -129,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 ); } @@ -160,7 +163,7 @@ do_abandon( } else { /* close '{' */ - err = ber_printf( ber, "}" ); + err = ber_printf( ber, /*{*/ "}" ); if( err == -1 ) { /* encoding error */ @@ -199,22 +202,23 @@ do_abandon( } } - 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++ ) + i = 0; + if ( ld->ld_abandoned != NULL ) { + for ( ; 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 ); - } } + + 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 ) { + 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;