summaryrefslogtreecommitdiff
path: root/source3/nsswitch/winbindd_cm.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2006-10-06 02:04:57 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:15:13 -0500
commit4be3f7665c6fe17b782098d74a4b02c4555269b8 (patch)
tree8f930024ac1cd6ac422a60d98574220943bf7d15 /source3/nsswitch/winbindd_cm.c
parent06e36b4e1860927eb76a2e756d86ef9b525ac743 (diff)
downloadsamba-4be3f7665c6fe17b782098d74a4b02c4555269b8.tar.gz
samba-4be3f7665c6fe17b782098d74a4b02c4555269b8.tar.bz2
samba-4be3f7665c6fe17b782098d74a4b02c4555269b8.zip
r19105: Ok - this is currently untested (but I'm testing it at
the moment) but winbindd isn't run in the build farm so hopefully won't break anything too badly - I don't want to lose this. If winbindd starts offline then it falls back to using MS-RPC backend. On going online it needs to reset the backend and try and go to using the AD backend code if possible, as the MS-RPC sequence number fetch just returns 1 as the sequence number if run against an AD DC. In addition, the winbindd async child may end up with the AD backend whilst the main winbindd - which still contacts the DC for some non-async calls, is left using MS-RPC. This can cause some trouble (as you can imagine :-). Attempt to ensure both main winbindd and async children us AD backends on going online. Jeremy. (This used to be commit 5efd4b04b89ace4b264e9ac37a90e202749792be)
Diffstat (limited to 'source3/nsswitch/winbindd_cm.c')
-rw-r--r--source3/nsswitch/winbindd_cm.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source3/nsswitch/winbindd_cm.c b/source3/nsswitch/winbindd_cm.c
index a9f6ea3000..17663a7cfc 100644
--- a/source3/nsswitch/winbindd_cm.c
+++ b/source3/nsswitch/winbindd_cm.c
@@ -160,6 +160,7 @@ void set_domain_offline(struct winbindd_domain *domain)
static void set_domain_online(struct winbindd_domain *domain)
{
+ extern struct winbindd_methods reconnect_methods;
struct timeval now;
DEBUG(10,("set_domain_online: called for domain %s\n",
@@ -178,6 +179,20 @@ static void set_domain_online(struct winbindd_domain *domain)
/* Ok, we're out of any startup mode now... */
domain->startup = False;
+
+ /* We were offline - now we're online. We default to
+ using the MS-RPC backend if we started offline,
+ and if we're going online for the first time we
+ should really re-initialize the backends and the
+ checks to see if we're talking to an AD or NT domain.
+ */
+
+ domain->initialized = False;
+
+ /* 'reconnect_methods' is the MS-RPC backend. */
+ if (domain->backend == &reconnect_methods) {
+ domain->backend = NULL;
+ }
}
/****************************************************************