From 552a9f199c4f6593d82d5abb02361012a1b0c6bd Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 19 Jul 2004 20:31:41 +0000 Subject: [PATCH] Import backglue/backover conflict fix from HEAD --- servers/slapd/back-monitor/database.c | 2 +- servers/slapd/back-monitor/overlay.c | 2 +- servers/slapd/backover.c | 41 +++++++++++---------------- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/servers/slapd/back-monitor/database.c b/servers/slapd/back-monitor/database.c index 7191e5479b..ad33800de9 100644 --- a/servers/slapd/back-monitor/database.c +++ b/servers/slapd/back-monitor/database.c @@ -80,7 +80,7 @@ monitor_subsys_database_init( bi = be->bd_info; if ( strcmp( be->bd_info->bi_type, "over" ) == 0 ) { - oi = (slap_overinfo *)be->bd_info; + oi = (slap_overinfo *)be->bd_info->bi_private; bi = oi->oi_orig; } diff --git a/servers/slapd/back-monitor/overlay.c b/servers/slapd/back-monitor/overlay.c index 22b704f66a..27f309b61c 100644 --- a/servers/slapd/back-monitor/overlay.c +++ b/servers/slapd/back-monitor/overlay.c @@ -118,7 +118,7 @@ monitor_subsys_overlay_init( continue; } - on2 = ((slap_overinfo *)be->bd_info)->oi_list; + on2 = ((slap_overinfo *)be->bd_info->bi_private)->oi_list; for ( ; on2; on2 = on2->on_next ) { if ( on2->on_bi.bi_type == on->on_bi.bi_type ) { break; diff --git a/servers/slapd/backover.c b/servers/slapd/backover.c index d51de28535..1b490825ed 100644 --- a/servers/slapd/backover.c +++ b/servers/slapd/backover.c @@ -36,8 +36,9 @@ over_db_func( enum db_which which ) { - slap_overinfo *oi = (slap_overinfo *) be->bd_info; + slap_overinfo *oi = be->bd_info->bi_private; slap_overinst *on = oi->oi_list; + BackendInfo *bi_orig = be->bd_info; BI_db_open **func; int rc = 0; @@ -54,7 +55,7 @@ over_db_func( rc = func[which]( be ); } } - be->bd_info = (BackendInfo *)oi; + be->bd_info = bi_orig; return rc; } @@ -67,8 +68,9 @@ over_db_config( char **argv ) { - slap_overinfo *oi = (slap_overinfo *) be->bd_info; + slap_overinfo *oi = be->bd_info->bi_private; slap_overinst *on = oi->oi_list; + BackendInfo *bi_orig = be->bd_info; int rc = 0; if ( oi->oi_orig->bi_db_config ) { @@ -87,7 +89,7 @@ over_db_config( if ( rc != SLAP_CONF_UNKNOWN ) break; } } - be->bd_info = (BackendInfo *)oi; + be->bd_info = bi_orig; return rc; } @@ -112,7 +114,7 @@ over_db_destroy( BackendDB *be ) { - slap_overinfo *oi = (slap_overinfo *) be->bd_info; + slap_overinfo *oi = be->bd_info->bi_private; slap_overinst *on = oi->oi_list, *next; int rc; @@ -188,7 +190,7 @@ over_op_func( enum op_which which ) { - slap_overinfo *oi = (slap_overinfo *) op->o_bd->bd_info; + slap_overinfo *oi = op->o_bd->bd_info->bi_private; slap_overinst *on = oi->oi_list; BI_op_bind **func; BackendDB *be = op->o_bd, db = *op->o_bd; @@ -209,15 +211,16 @@ over_op_func( } } - op->o_bd = be; func = &oi->oi_orig->bi_op_bind; if ( func[which] && rc == SLAP_CB_CONTINUE ) { + db.bd_info = oi->oi_orig; rc = func[which]( op, rs ); } /* should not fall thru this far without anything happening... */ if ( rc == SLAP_CB_CONTINUE ) { rc = op_rc[ which ]; } + op->o_bd = be; op->o_callback = cb.sc_next; return rc; } @@ -342,6 +345,12 @@ overlay_config( BackendDB *be, const char *ov ) oi = ch_malloc( sizeof(slap_overinfo) ); oi->oi_orig = be->bd_info; oi->oi_bi = *be->bd_info; + + /* Save a pointer to ourself in bi_private. + * This allows us to keep working in conjunction + * with backglue... + */ + oi->oi_bi.bi_private = oi; oi->oi_list = NULL; bi = (BackendInfo *)oi; @@ -376,24 +385,9 @@ overlay_config( BackendDB *be, const char *ov ) be->bd_info = bi; } else { - oi = (slap_overinfo *) be->bd_info; + oi = be->bd_info->bi_private; } -#if 0 - /* Walk to the end of the list of overlays, add the new - * one onto the end - */ - for ( prev=NULL, on2 = oi->oi_list; on2; prev=on2, on2=on2->on_next ); - on2 = ch_calloc( 1, sizeof(slap_overinst) ); - if ( !prev ) { - oi->oi_list = on2; - } else { - prev->on_next = on2; - } - *on2 = *on; - on2->on_next = NULL; - on2->on_info = oi; -#else /* Insert new overlay on head of list. Overlays are executed * in reverse of config order... */ @@ -402,7 +396,6 @@ overlay_config( BackendDB *be, const char *ov ) on2->on_info = oi; on2->on_next = oi->oi_list; oi->oi_list = on2; -#endif /* Any initialization needed? */ if ( on->on_bi.bi_db_init ) { -- 2.39.5