From: Ondřej Kuzník Date: Fri, 19 Jul 2024 08:53:35 +0000 (+0100) Subject: ITS#10232 Reset cs_refreshing on config delete X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=444804995595e1b426a8e3803c97ae324f4cf63c;p=thirdparty%2Fopenldap.git ITS#10232 Reset cs_refreshing on config delete --- diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 4a5d0c70e1..c708ebec88 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -527,7 +527,7 @@ start_refresh(syncinfo_t *si) } static int -refresh_finished(syncinfo_t *si) +refresh_finished(syncinfo_t *si, int reschedule) { syncinfo_t *sie; int removed = 0; @@ -538,7 +538,7 @@ refresh_finished(syncinfo_t *si) removed = 1; } - if ( removed ) { + if ( removed && reschedule ) { for ( sie = si->si_be->be_syncinfo; sie; sie = sie->si_next ) { if ( sie->si_paused ) { struct re_s* rtask = sie->si_re; @@ -1186,7 +1186,7 @@ do_syncrep1( if ( rc == SYNC_BUSY ) { return rc; } else if ( rc != LDAP_SUCCESS ) { - refresh_finished( si ); + refresh_finished( si, 1 ); Debug( LDAP_DEBUG_ANY, "do_syncrep1: %s " "ldap_search_ext: %s (%d)\n", si->si_ridtxt, ldap_err2string( rc ), rc ); @@ -1873,7 +1873,7 @@ logerr: } ber_scanf( ber, /*"{"*/ "}" ); if ( refreshing && si->si_refreshDone ) { - refresh_finished( si ); + refresh_finished( si, 1 ); refreshing = 0; } break; @@ -2022,7 +2022,7 @@ done: si->si_ridtxt, err, ldap_err2string( err ) ); } if ( refreshing && ( rc || si->si_refreshDone ) ) { - refresh_finished( si ); + refresh_finished( si, 1 ); } slap_sync_cookie_free( &syncCookie, 0 ); @@ -6333,7 +6333,7 @@ syncinfo_free( syncinfo_t *sie, int free_all ) } if ( sie->si_cookieState ) { /* Could be called from do_syncrepl (server unpaused) */ - if ( !free_all ) refresh_finished( sie ); + refresh_finished( sie, !free_all ); sie->si_cookieState->cs_ref--; if ( !sie->si_cookieState->cs_ref ) {