diff options
author | Simo Sorce <idra@samba.org> | 2008-02-01 13:50:04 -0500 |
---|---|---|
committer | Simo Sorce <idra@samba.org> | 2008-02-01 14:23:43 -0500 |
commit | 9347d34b502bef70cdae8f3e8acd9796dba49581 (patch) | |
tree | 472f53043d32de1368bce62353fdeb4134d87c2b /source/winbindd/winbindd_dual.c | |
parent | 91be824d2ba0b8dccf42ba2b8555a204aa1fa56c (diff) | |
download | samba-9347d34b502bef70cdae8f3e8acd9796dba49581.tar.gz samba-9347d34b502bef70cdae8f3e8acd9796dba49581.tar.xz samba-9347d34b502bef70cdae8f3e8acd9796dba49581.zip |
Fix winbindd running on a Samba DC,
This patch make sure we do not try to contact smbd in the main dameon
to avoid deadlocks.
All the operations that require connecting to smbd are performed in
the domain child anyway.
Diffstat (limited to 'source/winbindd/winbindd_dual.c')
-rw-r--r-- | source/winbindd/winbindd_dual.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/winbindd/winbindd_dual.c b/source/winbindd/winbindd_dual.c index 778886d8e28..2739ab542e2 100644 --- a/source/winbindd/winbindd_dual.c +++ b/source/winbindd/winbindd_dual.c @@ -34,6 +34,7 @@ #define DBGC_CLASS DBGC_WINBIND extern bool override_logfile; +extern struct winbindd_methods cache_methods; /* Read some data from a client connection */ @@ -991,6 +992,16 @@ static bool fork_domain_child(struct winbindd_child *child) child); } + /* Special case for Winbindd on a Samba DC, + * We want to make sure the child can connect to smbd + * but not the main daemon */ + + if (child->domain && child->domain->internal && IS_DC) { + child->domain->internal = False; + child->domain->methods = &cache_methods; + child->domain->online = False; + } + while (1) { int ret; |