1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

r17937: Move the saf_ cache into the tcp ad connection code.

Cause winbindd to set site support before doing the
generic AD server lookup.
Jeremy.
(This used to be commit a983394171)
This commit is contained in:
Jeremy Allison 2006-08-30 18:48:49 +00:00 committed by Gerald (Jerry) Carter
parent f2b3143cf7
commit 9d37ee52e0
2 changed files with 21 additions and 7 deletions

View File

@ -169,10 +169,6 @@ BOOL ads_try_connect(ADS_STRUCT *ads, const char *server )
ads->ldap_ip = *interpret_addr2(srv);
SAFE_FREE(srv);
/* cache the successful connection */
saf_store( ads->server.workgroup, server );
/* Store our site name. */
sitename_store( cldap_reply.client_site_name );
@ -243,7 +239,7 @@ again:
return status;
}
/* if we fail this loop, then giveup since all the IP addresses returned were dead */
for ( i=0; i<count; i++ ) {
fstring server;
@ -338,6 +334,10 @@ got_connection:
{
return ADS_ERROR(LDAP_OPERATIONS_ERROR);
}
/* cache the successful connection */
saf_store( ads->server.workgroup, inet_ntoa(ads->ldap_ip));
ldap_set_option(ads->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
status = ADS_ERROR(smb_ldap_start_tls(ads->ld, version));

View File

@ -652,7 +652,7 @@ static BOOL get_dcs(TALLOC_CTX *mem_ctx, const struct winbindd_domain *domain,
int iplist_size = 0;
int i;
BOOL is_our_domain;
enum security_types sec = (enum security_types)lp_security();
is_our_domain = strequal(domain->name, lp_workgroup());
@ -665,13 +665,27 @@ static BOOL get_dcs(TALLOC_CTX *mem_ctx, const struct winbindd_domain *domain,
return True;
}
#ifdef WITH_ADS
if (sec == SEC_ADS) {
/* We need to make sure we know the local site before
doing any DNS queries, as this will restrict the
get_sorted_dc_list() call below to only fetching
DNS records for the correct site. */
/* Find any DC to get the site record.
We deliberately don't care about the
return here. */
get_dc_name(domain->name, lp_realm(), dcname, &ip);
}
#endif
/* try standard netbios queries first */
get_sorted_dc_list(domain->name, &ip_list, &iplist_size, False);
/* check for security = ads and use DNS if we can */
if ( iplist_size==0 && lp_security() == SEC_ADS )
if ( iplist_size==0 && sec == SEC_ADS )
get_sorted_dc_list(domain->alt_name, &ip_list, &iplist_size, True);
/* FIXME!! this is where we should re-insert the GETDC requests --jerry */