s3: winbindd: Move the logic of whether to set 'domain->primary' into add_trusted_dom...
authorJeremy Allison <jra@samba.org>
Mon, 6 Jan 2014 23:15:37 +0000 (15:15 -0800)
committerKarolin Seeger <kseeger@samba.org>
Fri, 10 Jan 2014 08:50:22 +0000 (09:50 +0100)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=10358

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
(cherry picked from commit cfa6a36467f5679a88e49419e8af32b724c242bd)

source3/winbindd/winbindd_util.c

index 6e13ca8ba7db19d9aafc03976e33350e3c4a6d39..16c1d05ce68691b2565d07eb8c46aa16e317e7a8 100644 (file)
@@ -99,6 +99,7 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
        char *idmap_config_option;
        const char *param;
        const char **ignored_domains, **dom;
+       int role = lp_server_role();
 
        ignored_domains = lp_parm_string_list(-1, "winbind", "ignore domains", NULL);
        for (dom=ignored_domains; dom && *dom; dom++) {
@@ -192,6 +193,15 @@ static struct winbindd_domain *add_trusted_domain(const char *domain_name, const
                sid_copy(&domain->sid, sid);
        }
 
+       /* Is this our primary domain ? */
+       if (strequal(domain_name, get_global_sam_name()) &&
+                       (role != ROLE_DOMAIN_MEMBER)) {
+               domain->primary = true;
+       } else if (strequal(domain_name, lp_workgroup()) &&
+                       (role == ROLE_DOMAIN_MEMBER)) {
+               domain->primary = true;
+       }
+
        /* Link to domain list */
        DLIST_ADD_END(_domain_list, domain, struct winbindd_domain *);
 
@@ -620,9 +630,6 @@ bool init_domain_list(void)
        domain = add_trusted_domain(get_global_sam_name(), NULL,
                                    &cache_methods, get_global_sam_sid());
        if (domain) {
-               if ( role != ROLE_DOMAIN_MEMBER ) {
-                       domain->primary = True;
-               }
                setup_domain_child(domain);
        }
 
@@ -639,7 +646,6 @@ bool init_domain_list(void)
                domain = add_trusted_domain( lp_workgroup(), lp_realm(),
                                             &cache_methods, &our_sid);
                if (domain) {
-                       domain->primary = True;
                        setup_domain_child(domain);
 
                        /* Even in the parent winbindd we'll need to