[Samba] Slowdown due to change in DC lookup from 3.0.1 to 3.0.2a

Derek Holden dsh2120 at draper.com
Thu Jul 15 15:27:41 GMT 2004


I am experiencing slowdown due to changes introduced after 3.0.1 to the various 
DC lookup routines. I have it narrowed down but don't know where to go from 
here. First the relevant pieces of the conf:

[global]
    workgroup = COMPANY.COM
    security = server
    log level = "4 auth:6"
    password server = SERVER1 SERVER2
    wins server = 10.0.0.29
    os level = 0
    domain / preferred / local master = no
    dns proxy = no

The logs from 3.0.1 (worked fine):

   [2004/07/15 09:55:43, 4] libsmb/namequery.c:get_dc_list(1350)
     get_dc_list: returning 2 ip addresses in an ordered list
   [2004/07/15 09:55:43, 4] libsmb/namequery.c:get_dc_list(1351)
     get_dc_list: 10.0.0.29:0 10.0.0.28:0
   [2004/07/15 09:55:43, 3] libads/ldap.c:ads_connect(218)
     Connected to LDAP server 10.0.0.29
   [2004/07/15 09:55:43, 3] libads/ldap.c:ads_server_info(1887)
     got ldap server name server1 at COMPANY.COM, using bind path:
     dc=COMPANY,dc=COM
   [2004/07/15 09:55:43, 4] libsmb/namequery_dc.c:ads_dc_name(65)
     ads_dc_name: using server='SERVER1' IP=10.0.0.29
   [2004/07/15 09:55:43, 3] libsmb/cliconnect.c:cli_start_connection(1326)
     Connecting to host=SERVER1
   [2004/07/15 09:55:43, 3] lib/util_sock.c:open_socket_out(706)
     Connecting to 10.0.0.29 at port 445
   [2004/07/15 09:55:43, 3] auth/auth.c:check_ntlm_password(219)
     ...

The logs from 3.0.4 (slowdown from 59:31 to 59:39)

   [2004/07/15 09:59:31, 4] libsmb/namequery.c:get_dc_list(1350)
     get_dc_list: returning 2 ip addresses in an ordered list
   [2004/07/15 09:59:31, 4] libsmb/namequery.c:get_dc_list(1351)
     get_dc_list: 10.0.0.29:0 10.0.0.28:0
   [2004/07/15 09:59:39, 3] libsmb/trusts_util.c:enumerate_domain_trusts(149)
     enumerate_domain_trusts: can't locate a DC for domain COMAPNY.COM
   [2004/07/15 09:59:39, 5] auth/auth_util.c:make_user_info(132)
     attempting to make a user_info for  ()
   [2004/07/15 09:59:39, 5] auth/auth_util.c:make_user_info(142)
     making strings for 's user_info struct
   [2004/07/15 09:59:39, 5] auth/auth_util.c:make_user_info(184)
     making blobs for 's user_info struct
   [2004/07/15 09:59:39, 3] auth/auth.c:check_ntlm_password(219)
     ...

Continues on and authenticats against the addresses above and works. The appears 
to be happening in libsmb/trust_utils.c enumerate_domain_trusts ():

   if ( !get_dc_name(domain, NULL, dc_name, &dc_ip) ) {
      DEBUG(3,("enumerate_domain_trusts: can't locate a DC for domain %s\n",
               domain));

The function get_dc_name was changed in libsmb/namequery_dc.c (1.5 to 1.6 in 
MAIN) from:

   if ( (our_domain && lp_security()==SEC_ADS) || strchr_m(domain, '.') ) {
      ret = ads_dc_name(domain, &dc_ip, srv_name);

To:

   if ( (our_domain && lp_security()==SEC_ADS) || realm ) {
      ret = ads_dc_name(domain, realm, &dc_ip, srv_name);

It appears before ads_dc_name () was being called before because the condition 
strchr_m(domain, '.') was passing due to the domain being 'COMPANY.COM' in the conf.

Now it fails because it it is checking either ADS security mode or realm. 
However, realm is set to NULL from the enumerate_domain_trusts call.

So that's where I am at. I don't have the priviledges at the company to add this 
server to the domain, which is why security mode is server. I'd appreciate any 
help or pointers. Thanks a lot,

	- Derek


More information about the samba mailing list