From cfa6a36467f5679a88e49419e8af32b724c242bd Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 6 Jan 2014 15:15:37 -0800 Subject: [PATCH] s3: winbindd: Move the logic of whether to set 'domain->primary' into add_trusted_domain(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=10358 Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- source3/winbindd/winbindd_util.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c index 85b014d97cc..10ca13222b4 100644 --- a/source3/winbindd/winbindd_util.c +++ b/source3/winbindd/winbindd_util.c @@ -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++) { @@ -196,6 +197,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 *); @@ -628,9 +638,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); } @@ -647,7 +654,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 -- 2.34.1