From 3622cf7275f93159cb9c40eec1898c03a3722f83 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Thu, 15 Apr 2010 20:42:22 +0000 Subject: [PATCH] Fix for CB_TAIL with cached results --- servers/slapd/overlays/pcache.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index 699954357f..83705e0104 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -3018,14 +3018,22 @@ pcache_op_search( pbi->bi_cq = answerable; op->o_bd = &cm->db; -#if 0 if ( cm->response_cb == PCACHE_RESPONSE_CB_TAIL ) { + slap_callback cb; /* The cached entry was already processed by any * other overlays, so don't let it get processed again. + * + * This loop removes over_back_response from the stack. */ - op->o_callback = NULL; + if ( overlay_callback_after_backover( op, &cb, 0) == 0 ) { + slap_callback **scp; + for ( scp = &op->o_callback; *scp != NULL; + scp = &(*scp)->sc_next ) { + if ( (*scp)->sc_next == &cb ) + *scp = cb.sc_next; + } + } } -#endif i = cm->db.bd_info->bi_op_search( op, rs ); } ldap_pvt_thread_rdwr_runlock(&answerable->rwlock); -- 2.39.5