From a12298c12e38ab3fc72c703891d9cdc3d0c1be80 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Thu, 30 Jun 2005 02:36:55 +0000 Subject: [PATCH] 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) --- libraries/libldap/abandon.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 ) { -- 2.39.5