s3:winbindd: make sure we only call static_init_idmap once
authorStefan Metzmacher <metze@samba.org>
Mon, 31 May 2010 08:57:52 +0000 (10:57 +0200)
committerMichael Adam <obnox@samba.org>
Wed, 23 Jun 2010 10:40:40 +0000 (12:40 +0200)
metze

Signed-off-by: Michael Adam <obnox@samba.org>
source3/winbindd/idmap.c

index 532a90ed3d8df147296e49ed7d8ad20e65b8ffa9..582293c7dcc904cb45e61c4e3ce0c704aa91bb4d 100644 (file)
 
 static_decl_idmap;
 
+static void idmap_init(void)
+{
+       static bool initialized;
+
+       if (initialized) {
+               return;
+       }
+
+       DEBUG(10, ("idmap_init(): calling static_init_idmap\n"));
+
+       static_init_idmap;
+
+       initialized = true;
+}
+
 /**
  * Pointer to the backend methods. Modules register themselves here via
  * smb_register_idmap.
@@ -350,9 +365,7 @@ static struct idmap_domain *idmap_init_default_domain(TALLOC_CTX *mem_ctx)
        char *modulename;
        char *params;
 
-       DEBUG(10, ("idmap_init_default_domain: calling static_init_idmap\n"));
-
-       static_init_idmap;
+       idmap_init();
 
        if (!parse_idmap_module(talloc_tos(), lp_idmap_backend(), &modulename,
                                &params)) {
@@ -432,9 +445,7 @@ fail:
 
 static struct idmap_domain *idmap_init_passdb_domain(TALLOC_CTX *mem_ctx)
 {
-       DEBUG(10, ("idmap_init_passdb_domain: calling static_init_idmap\n"));
-
-       static_init_idmap;
+       idmap_init();
 
        if (passdb_idmap_domain != NULL) {
                return passdb_idmap_domain;