s3:winbindd: make sure we only call static_init_idmap once
authorBjörn Jacke <bj@sernet.de>
Wed, 24 Aug 2011 08:57:49 +0000 (10:57 +0200)
committerKarolin Seeger <kseeger@samba.org>
Fri, 21 Sep 2012 07:44:44 +0000 (09:44 +0200)
this is a backport of 3f14d03adbda03b821210115af4fae044a9b4a3e

Fix bug #8402 - winbind log spammed with idmap messages.
(cherry picked from commit 04e4325642d029e604c31b371811fafdf2b61cf8)

source3/winbindd/idmap.c

index 7aa2853df10c4e556152ea18689b74a7727d81d4..2414dab224ed1a9ed3436450899ae61fb770e0cd 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.
@@ -346,9 +361,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)) {
@@ -546,7 +559,7 @@ static NTSTATUS idmap_alloc_init(struct idmap_alloc_context **ctx)
        char *modulename, *params;
        NTSTATUS ret = NT_STATUS_NO_MEMORY;;
 
-       static_init_idmap;
+       idmap_init();
 
        if (idmap_alloc_ctx != NULL) {
                *ctx = idmap_alloc_ctx;