diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 886f120b04..7200e8c338 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -6994,10 +6994,17 @@ config_back_search( Operation *op, SlapReply *rs ) CfBackInfo *cfb; CfEntryInfo *ce, *last = NULL; slap_mask_t mask; + int paused = 0; cfb = (CfBackInfo *)op->o_bd->be_private; - ldap_pvt_thread_rdwr_rlock( &cfb->cb_rwlock ); + if ( ldap_pvt_thread_pool_query( &connection_pool, + LDAP_PVT_THREAD_POOL_PARAM_PAUSED, &paused ) ) { + return -1; + } + if ( !paused ) { + ldap_pvt_thread_rdwr_rlock( &cfb->cb_rwlock ); + } ce = config_find_base( cfb->cb_root, &op->o_req_ndn, &last, op ); if ( !ce ) { if ( last ) @@ -7032,7 +7039,8 @@ config_back_search( Operation *op, SlapReply *rs ) } out: - ldap_pvt_thread_rdwr_runlock( &cfb->cb_rwlock ); + if ( !paused ) + ldap_pvt_thread_rdwr_runlock( &cfb->cb_rwlock ); send_ldap_result( op, rs ); return rs->sr_err; }