diff options
Diffstat (limited to 'source3/nsswitch/winbindd_cache.c')
-rw-r--r-- | source3/nsswitch/winbindd_cache.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/source3/nsswitch/winbindd_cache.c b/source3/nsswitch/winbindd_cache.c index 5464e765d1..9f7d3686a5 100644 --- a/source3/nsswitch/winbindd_cache.c +++ b/source3/nsswitch/winbindd_cache.c @@ -105,9 +105,19 @@ static struct winbind_cache *get_cache(struct winbindd_domain *domain) #ifdef HAVE_ADS case SEC_ADS: { extern struct winbindd_methods ads_methods; - domain->backend = &ads_methods; - break; - } + /* always obey the lp_security parameter for our domain */ + if ( strequal(lp_realm(), domain->alt_name) ) { + domain->backend = &ads_methods; + break; + } + + if ( domain->native_mode ) { + domain->backend = &ads_methods; + break; + } + + /* fall through */ + } #endif default: domain->backend = &msrpc_methods; @@ -990,10 +1000,6 @@ static NTSTATUS sid_to_name(struct winbindd_domain *domain, do_query: *name = NULL; - if (wcache_server_down(domain)) { - return NT_STATUS_SERVER_DISABLED; - } - /* If the seq number check indicated that there is a problem * with this DC, then return that status... except for * access_denied. This is special because the dc may be in |