From 29e09616e34debf64185264a05d00cf2eff47fc5 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount <quanah@openldap.org> Date: Wed, 29 Apr 2009 02:35:32 +0000 Subject: [PATCH] ITS#6016 --- CHANGES | 1 + servers/slapd/module.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/CHANGES b/CHANGES index d23def55eb..80def09e06 100644 --- a/CHANGES +++ b/CHANGES @@ -3,6 +3,7 @@ OpenLDAP 2.4 Change Log OpenLDAP 2.4.17 Engineering Fixed slapd normalization of updated schema attributes (ITS#5540) Fixed slapd errno handling (ITS#6037) + Fixed slapd moduleload with static backends and modules (ITS#6016) Build Environment Added test056-monitor (ITS#5540) Added test057-memberof-refint (ITS#5395) diff --git a/servers/slapd/module.c b/servers/slapd/module.c index a09da6a8b6..3b95c7c4b4 100644 --- a/servers/slapd/module.c +++ b/servers/slapd/module.c @@ -136,6 +136,31 @@ int module_load(const char* file_name, int argc, char *argv[]) return -1; } + /* If loading a backend, see if we already have it */ + if ( !strncasecmp( file_name, "back_", 5 )) { + char *name = (char *)file_name + 5; + char *dot = strchr( name, '.'); + if (dot) *dot = '\0'; + rc = backend_info( name ) != NULL; + if (dot) *dot = '.'; + if ( rc ) { + Debug( LDAP_DEBUG_CONFIG, "module_load: (%s) already present (static)\n", + file_name, 0, 0 ); + return 0; + } + } else { + /* check for overlays too */ + char *dot = strchr( file_name, '.' ); + if ( dot ) *dot = '\0'; + rc = overlay_find( file_name ) != NULL; + if ( dot ) *dot = '.'; + if ( rc ) { + Debug( LDAP_DEBUG_CONFIG, "module_load: (%s) already present (static)\n", + file_name, 0, 0 ); + return 0; + } + } + module = (module_loaded_t *)ch_calloc(1, sizeof(module_loaded_t) + strlen(file_name)); if (module == NULL) { -- GitLab