From: Pierangelo Masarati Date: Thu, 30 Jun 2005 02:36:55 +0000 (+0000) Subject: re-fetch the request; since the mutex has been released wile freeing the message... X-Git-Tag: OPENLDAP_AC_BP~485 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a12298c12e38ab3fc72c703891d9cdc3d0c1be80;p=openldap re-fetch the request; since the mutex has been released wile freeing the message, it may have been already removed by someone else (ITS#3800) --- diff --git a/libraries/libldap/abandon.c b/libraries/libldap/abandon.c index 27b47b5f57..fa7c74efc2 100644 --- a/libraries/libldap/abandon.c +++ b/libraries/libldap/abandon.c @@ -130,7 +130,7 @@ do_abandon( } if ( lr->lr_origid == msgid ) {/* child: abandon it */ (void) do_abandon( ld, - msgid, lr->lr_msgid, sctrls, cctrls ); + lr->lr_origid, lr->lr_msgid, sctrls, cctrls ); } } @@ -161,6 +161,15 @@ do_abandon( return LDAP_SUCCESS; } + /* fetch again the request that we are abandoning */ + if ( lr != NULL ) { + for ( lr = ld->ld_requests; lr != NULL; lr = lr->lr_next ) { + if ( lr->lr_msgid == msgid ) { /* this message */ + break; + } + } + } + err = 0; if ( sendabandon ) { if( ber_sockbuf_ctrl( ld->ld_sb, LBER_SB_OPT_GET_FD, NULL ) == -1 ) {