From f4bfb5e0a53f831c42567f136e630f47d1f33f45 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 b9b9c257bf..c61d309686 100644 --- a/servers/slapd/back-ldap/chain.c +++ b/servers/slapd/back-ldap/chain.c @@ -1282,7 +1282,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 @@ -2318,6 +2318,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 a704d0def8..10a711c7c3 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -3752,7 +3752,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 } }; @@ -5669,6 +5670,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 22fdd44857..5d00645f48 100644 --- a/servers/slapd/overlays/translucent.c +++ b/servers/slapd/overlays/translucent.c @@ -113,7 +113,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() */ @@ -1388,6 +1389,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" ); translucent.on_bi.bi_type = "translucent";