From a71d9b291c5365f08250b77d281f4cc8f24ec2e2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 10 May 2000 13:21:32 +0000 Subject: treat a blank "password server =" line as a "*" if in domain security (This used to be commit 5a617c013cce65434d315dc33279a4bc28dc63de) --- source3/nsswitch/winbindd_util.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'source3/nsswitch') diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c index b3e5780f93..daffb1ef8c 100644 --- a/source3/nsswitch/winbindd_util.c +++ b/source3/nsswitch/winbindd_util.c @@ -26,7 +26,9 @@ BOOL domain_handles_open(struct winbindd_domain *domain) { return domain->sam_handle_open && - domain->sam_dom_handle_open; + domain->sam_dom_handle_open && + rpc_hnd_ok(&domain->sam_handle) && + rpc_hnd_ok(&domain->sam_dom_handle); } static BOOL resolve_dc_name(char *domain_name, fstring domain_controller) @@ -36,8 +38,7 @@ static BOOL resolve_dc_name(char *domain_name, fstring domain_controller) /* if its our primary domain and password server is not '*' then use the password server parameter */ - if (strcmp(domain_name,lp_workgroup()) == 0 && - strcmp(lp_passwordserver(),"*") != 0) { + if (strcmp(domain_name,lp_workgroup()) == 0 && !lp_wildcard_dc()) { fstrcpy(domain_controller, lp_passwordserver()); return True; } @@ -124,6 +125,19 @@ static BOOL open_sam_handles(struct winbindd_domain *domain) if (!domain->got_domain_info) return False; } + if ((domain->sam_handle_open && !rpc_hnd_ok(&domain->sam_handle)) || + (domain->sam_dom_handle_open && !rpc_hnd_ok(&domain->sam_dom_handle))) { + domain->got_domain_info = get_domain_info(domain); + if (domain->sam_dom_handle_open) { + samr_close(&domain->sam_dom_handle); + domain->sam_dom_handle_open = False; + } + if (domain->sam_handle_open) { + samr_close(&domain->sam_handle); + domain->sam_handle_open = False; + } + } + /* Open sam handle if it isn't already open */ if (!domain->sam_handle_open) { domain->sam_handle_open = @@ -187,7 +201,7 @@ void establish_connections(void) if (!server_state.pwdb_initialised) { fstrcpy(server_state.controller, lp_passwordserver()); - if (strcmp(server_state.controller,"*") == 0) { + if (lp_wildcard_dc()) { if (!resolve_dc_name(lp_workgroup(), server_state.controller)) { return; } -- cgit