s3-winbind: Fixed the winbind caching.
authorGünther Deschner <gd@samba.org>
Tue, 6 Jul 2010 10:50:48 +0000 (12:50 +0200)
committerAndreas Schneider <asn@samba.org>
Tue, 6 Jul 2010 16:38:14 +0000 (18:38 +0200)
source3/winbindd/winbindd_cache.c
source3/winbindd/winbindd_util.c

index 1bfbdb6699cb9101c90116b24fae733255e82c81..a3e202bc7e44c7d345a10cc909b9d495e08a40af 100644 (file)
@@ -41,6 +41,7 @@ extern struct winbindd_methods reconnect_methods;
 extern struct winbindd_methods ads_methods;
 #endif
 extern struct winbindd_methods builtin_passdb_methods;
+extern struct winbindd_methods sam_passdb_methods;
 
 /*
  * JRA. KEEP THIS LIST UP TO DATE IF YOU ADD CACHE ENTRIES.
@@ -143,6 +144,13 @@ static struct winbind_cache *get_cache(struct winbindd_domain *domain)
                domain->backend = &builtin_passdb_methods;
                domain->initialized = True;
        }
+
+       if (strequal(domain->name, get_global_sam_name()) &&
+           sid_equal(&domain->sid, get_global_sam_sid())) {
+               domain->backend = &sam_passdb_methods;
+               domain->initialized = True;
+       }
+
        if ( !domain->initialized ) {
                init_dc_connection( domain );
        }
index 735a446e0787bef502a7780c014156e0bd4c3da8..55874e057f13416027d24025825df0cde20f542c 100644 (file)
@@ -27,9 +27,6 @@
 #define DBGC_CLASS DBGC_WINBIND
 
 extern struct winbindd_methods cache_methods;
-extern struct winbindd_methods builtin_passdb_methods;
-extern struct winbindd_methods sam_passdb_methods;
-
 
 /**
  * @file winbindd_util.c
@@ -598,7 +595,7 @@ bool init_domain_list(void)
 
        /* BUILTIN domain */
 
-       domain = add_trusted_domain("BUILTIN", NULL, &builtin_passdb_methods,
+       domain = add_trusted_domain("BUILTIN", NULL, &cache_methods,
                                    &global_sid_Builtin);
        if (domain) {
                setup_domain_child(domain);
@@ -607,7 +604,7 @@ bool init_domain_list(void)
        /* Local SAM */
 
        domain = add_trusted_domain(get_global_sam_name(), NULL,
-                                   &sam_passdb_methods, get_global_sam_sid());
+                                   &cache_methods, get_global_sam_sid());
        if (domain) {
                if ( role != ROLE_DOMAIN_MEMBER ) {
                        domain->primary = True;