From 9b8cd201bb7acf6cee1bb3a7392aa27b27279a9d Mon Sep 17 00:00:00 2001 From: Emily Backes Date: Thu, 5 Feb 2015 18:46:24 -0800 Subject: [PATCH] ITS#7074 - change olcDatabaseDummy initialization for windows --- servers/slapd/back-ldap/chain.c | 8 +++++++- servers/slapd/overlays/pcache.c | 10 +++++++++- servers/slapd/overlays/translucent.c | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/servers/slapd/back-ldap/chain.c b/servers/slapd/back-ldap/chain.c index ec685adea0..0f7bedae03 100644 --- a/servers/slapd/back-ldap/chain.c +++ b/servers/slapd/back-ldap/chain.c @@ -1278,7 +1278,7 @@ static ConfigOCs chainocs[] = { "NAME 'olcChainDatabase' " "DESC 'Chain remote server configuration' " "AUXILIARY )", - Cft_Misc, olcDatabaseDummy, chain_ldadd + Cft_Misc, NULL, chain_ldadd #ifdef SLAP_CONFIG_DELETE , NULL, chain_lddel #endif @@ -2314,6 +2314,12 @@ chain_initialize( void ) /* Make sure we don't exceed the bits reserved for userland */ config_check_userland( CH_LAST ); + /* olcDatabaseDummy is defined in slapd, and Windows + will not let us initialize a struct element with a data pointer + from another library, so we have to initialize this element + "by hand". */ + chainocs[1].co_table = olcDatabaseDummy; + #ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR rc = register_supported_control( LDAP_CONTROL_X_CHAINING_BEHAVIOR, /* SLAP_CTRL_GLOBAL| */ SLAP_CTRL_ACCESS|SLAP_CTRL_HIDE, NULL, diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index f88ca09b38..7efe705027 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -3750,7 +3750,8 @@ static ConfigOCs pcocs[] = { { "( OLcfgOvOc:2.2 " "NAME 'olcPcacheDatabase' " "DESC 'Cache database configuration' " - "AUXILIARY )", Cft_Misc, olcDatabaseDummy, pc_ldadd }, + /* co_table is initialized in pcache_initialize */ + "AUXILIARY )", Cft_Misc, NULL, pc_ldadd }, { NULL, 0, NULL } }; @@ -5671,6 +5672,13 @@ pcache_initialize() ConfigArgs c; char *argv[ 4 ]; + /* olcDatabaseDummy is defined in slapd, and Windows + will not let us initialize a struct element with a data pointer + from another library, so we have to initialize this element + "by hand". */ + pcocs[1].co_table = olcDatabaseDummy; + + code = slap_loglevel_get( &debugbv, &pcache_debug ); if ( code ) { return code; diff --git a/servers/slapd/overlays/translucent.c b/servers/slapd/overlays/translucent.c index c788138416..fdf34d247c 100644 --- a/servers/slapd/overlays/translucent.c +++ b/servers/slapd/overlays/translucent.c @@ -107,7 +107,8 @@ static ConfigOCs translucentocs[] = { { "( OLcfgOvOc:14.2 " "NAME 'olcTranslucentDatabase' " "DESC 'Translucent target database configuration' " - "AUXILIARY )", Cft_Misc, olcDatabaseDummy, translucent_ldadd }, + /* co_table is initialized in translucent_initialize() */ + "AUXILIARY )", Cft_Misc, NULL, translucent_ldadd }, { NULL, 0, NULL } }; /* for translucent_init() */ @@ -1382,6 +1383,12 @@ int translucent_initialize() { int rc; + /* olcDatabaseDummy is defined in slapd, and Windows + will not let us initialize a struct element with a data pointer + from another library, so we have to initialize this element + "by hand". */ + translucentocs[1].co_table = olcDatabaseDummy; + Debug(LDAP_DEBUG_TRACE, "==> translucent_initialize\n", 0, 0, 0); translucent.on_bi.bi_type = "translucent"; -- 2.47.2