X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibldap%2Fabandon.c;h=80dadc325b23fe3f219ef0b649875b3e42ceb147;hb=a2eec74fc1d535fa9092f4d7b82a669b39eef539;hp=fbb184722a5357553da576b82ea5873972c6a6ca;hpb=66818be6377a665e21955621bedf9d34bda54beb;p=openldap diff --git a/libraries/libldap/abandon.c b/libraries/libldap/abandon.c index fbb184722a..80dadc325b 100644 --- a/libraries/libldap/abandon.c +++ b/libraries/libldap/abandon.c @@ -56,8 +56,13 @@ ldap_abandon_ext( LDAPControl **sctrls, LDAPControl **cctrls ) { + int rc; Debug( LDAP_DEBUG_TRACE, "ldap_abandon_ext %d\n", msgid, 0, 0 ); + /* check client controls */ + rc = ldap_int_client_controls( ld, cctrls ); + if( rc != LDAP_SUCCESS ) return rc; + return do_abandon( ld, msgid, msgid, sctrls, cctrls ); } @@ -77,7 +82,7 @@ int ldap_abandon( LDAP *ld, int msgid ) { Debug( LDAP_DEBUG_TRACE, "ldap_abandon %d\n", msgid, 0, 0 ); - return do_abandon( ld, msgid, msgid, NULL, NULL ) == LDAP_SUCCESS + return ldap_abandon_ext( ld, msgid, NULL, NULL ) == LDAP_SUCCESS ? 0 : -1; } @@ -142,10 +147,26 @@ do_abandon( ld->ld_errno = LDAP_NO_MEMORY; } else { - /* create a message to send */ - err = ber_printf( ber, "{iti", /* '}' */ +#ifdef LDAP_CONNECTIONLESS + if ( LDAP_IS_UDP(ld) ) { + err = ber_write( ber, ld->ld_options.ldo_peer, + sizeof(struct sockaddr), 0); + } + if ( LDAP_IS_UDP(ld) && ld->ld_options.ldo_version == + LDAP_VERSION2) { + char *dn = ld->ld_options.ldo_cldapdn; + if (!dn) dn = ""; + err = ber_printf( ber, "{isti", /* '}' */ + ++ld->ld_msgid, dn, + LDAP_REQ_ABANDON, msgid ); + } else +#endif + { + /* create a message to send */ + err = ber_printf( ber, "{iti", /* '}' */ ++ld->ld_msgid, - LDAP_REQ_ABANDON, msgid ); + LDAP_REQ_ABANDON, msgid ); + } if( err == -1 ) { /* encoding error */