The branch, v3-0-test has been updated via ad29a26c4226aa4d4a6a586413dcb0749bfea6b3 (commit) from 7ffc312b493d95389266be180d38b8a35584d6d9 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-0-test - Log ----------------------------------------------------------------- commit ad29a26c4226aa4d4a6a586413dcb0749bfea6b3 Author: Jeremy Allison <[EMAIL PROTECTED]> Date: Tue Jun 3 12:17:34 2008 -0700 Fix by Bo Yang <[EMAIL PROTECTED]> for bug with winbindd trusted domain chil not keeping primary domain online status up to date. Jeremy. ----------------------------------------------------------------------- Summary of changes: source/nsswitch/winbindd_dual.c | 22 ++++++++++++++++++++-- 1 files changed, 20 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/source/nsswitch/winbindd_dual.c b/source/nsswitch/winbindd_dual.c index 7b79734..5ba68d6 100644 --- a/source/nsswitch/winbindd_dual.c +++ b/source/nsswitch/winbindd_dual.c @@ -886,6 +886,7 @@ static BOOL fork_domain_child(struct winbindd_child *child) int fdpair[2]; struct winbindd_cli_state state; struct winbindd_domain *domain; + struct winbindd_domain *primary_domain = NULL; if (socketpair(AF_UNIX, SOCK_STREAM, 0, fdpair) != 0) { DEBUG(0, ("Could not open child pipe: %s\n", @@ -965,10 +966,13 @@ static BOOL fork_domain_child(struct winbindd_child *child) } /* Ensure we have no pending check_online events other - than one for this domain. */ + than one for this domain or the primary domain. */ for (domain = domain_list(); domain; domain = domain->next) { - if (domain != child->domain) { + if (domain->primary) { + primary_domain = domain; + } + if ((domain != child->domain) && !domain->primary) { TALLOC_FREE(domain->check_online_event); } } @@ -985,6 +989,20 @@ static BOOL fork_domain_child(struct winbindd_child *child) set_domain_online_request(child->domain); + if (primary_domain != child->domain) { + /* We need to talk to the primary + * domain as well as the trusted + * domain inside a trusted domain + * child. + * See the code in : + * winbindd_dual_pam_auth_samlogon() + * especially the calling of + * contact_domain = find_our_domain() + * in the non-DC case for details. + */ + set_domain_online_request(primary_domain); + } + child->lockout_policy_event = event_add_timed( winbind_event_context(), NULL, timeval_zero(), "account_lockout_policy_handler", -- Samba Shared Repository