From: Ondřej Kuzník Date: Thu, 29 Jul 2021 12:23:28 +0000 (+0100) Subject: ITS#9620 Freeze cache while we search X-Git-Tag: OPENLDAP_REL_ENG_2_6_0~121 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94b361ed45f342e97d405dd7236257cdf4c414ca;p=thirdparty%2Fopenldap.git ITS#9620 Freeze cache while we search --- diff --git a/servers/slapd/back-monitor/search.c b/servers/slapd/back-monitor/search.c index d23497a7ad..49702788f8 100644 --- a/servers/slapd/back-monitor/search.c +++ b/servers/slapd/back-monitor/search.c @@ -215,6 +215,9 @@ monitor_back_search( Operation *op, SlapReply *rs ) return rs->sr_err; } + /* Freeze the cache while we're using it */ + ldap_pvt_thread_rdwr_rlock( &mi->mi_cache_rwlock ); + rs->sr_attrs = op->oq_search.rs_attrs; switch ( op->oq_search.rs_scope ) { case LDAP_SCOPE_BASE: @@ -260,6 +263,8 @@ monitor_back_search( Operation *op, SlapReply *rs ) monitor_cache_release( mi, e ); } + ldap_pvt_thread_rdwr_runlock( &mi->mi_cache_rwlock ); + rs->sr_attrs = NULL; rs->sr_err = rc; if ( rs->sr_err != SLAPD_ABANDON ) {