Ignore:
Timestamp:
May 27, 2009, 9:09:42 AM (16 years ago)
Author:
Herwig Bauernfeind
Message:

Update 3.2 branch to 3.2.8

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.2.x/source/libads/ldap.c

    r228 r232  
    163163        }
    164164
     165        if (ads->config.client_site_name == NULL) {
     166                DEBUG(10,("ads_closest_dc: client belongs to no site\n"));
     167                return True;
     168        }
     169
    165170        DEBUG(10,("ads_closest_dc: %s is not the closest DC\n",
    166171                ads->config.ldap_server_name));
     
    268273static NTSTATUS ads_find_dc(ADS_STRUCT *ads)
    269274{
     275        const char *c_domain;
    270276        const char *c_realm;
    271277        int count, i=0;
    272278        struct ip_service *ip_list;
    273279        const char *realm;
     280        const char *domain;
    274281        bool got_realm = False;
    275282        bool use_own_domain = False;
     
    309316        }
    310317
     318        if ( use_own_domain ) {
     319                c_domain = lp_workgroup();
     320        } else {
     321                c_domain = ads->server.workgroup;
     322        }
     323
    311324        realm = c_realm;
     325        domain = c_domain;
     326
     327        /*
     328         * In case of LDAP we use get_dc_name() as that
     329         * creates the custom krb5.conf file
     330         */
     331        if (!(ads->auth.flags & ADS_AUTH_NO_BIND)) {
     332                fstring srv_name;
     333                struct sockaddr_storage ip_out;
     334
     335                DEBUG(6,("ads_find_dc: (ldap) looking for %s '%s'\n",
     336                        (got_realm ? "realm" : "domain"), realm));
     337
     338                if (get_dc_name(domain, realm, srv_name, &ip_out)) {
     339                        /*
     340                         * we call ads_try_connect() to fill in the
     341                         * ads->config details
     342                         */
     343                        if (ads_try_connect(ads, srv_name)) {
     344                                return NT_STATUS_OK;
     345                        }
     346                }
     347
     348                return NT_STATUS_NO_LOGON_SERVERS;
     349        }
    312350
    313351        sitename = sitename_fetch(realm);
     
    315353 again:
    316354
    317         DEBUG(6,("ads_find_dc: looking for %s '%s'\n",
     355        DEBUG(6,("ads_find_dc: (cldap) looking for %s '%s'\n",
    318356                (got_realm ? "realm" : "domain"), realm));
    319357
     
    482520        /* cache the successful connection for workgroup and realm */
    483521        if (ads_closest_dc(ads)) {
    484                 print_sockaddr(addr, sizeof(addr), &ads->ldap.ss);
    485                 saf_store( ads->server.workgroup, addr);
    486                 saf_store( ads->server.realm, addr);
     522                saf_store( ads->server.workgroup, ads->config.ldap_server_name);
     523                saf_store( ads->server.realm, ads->config.ldap_server_name);
    487524        }
    488525
Note: See TracChangeset for help on using the changeset viewer.