]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
If name_to_fqdn fails, retry with the dns domain the DC gave us
authorVolker Lendecke <vl@sernet.de>
Mon, 6 Oct 2008 12:49:10 +0000 (14:49 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 6 Oct 2008 13:23:39 +0000 (15:23 +0200)
This is a workaround for the cases where you want to join under a netbios name
that is different from your hostname, i.e. a name that can not be found in
/etc/hosts or dns. In these cases, name_to_fqdn fails or gives invalid results.

source3/libnet/libnet_join.c

index a39dee676fc7b0cb1706f4d409d21bcc3f71bb18..ab8af0be6bec6d1a3b75be613d3e04ef2257d54a 100644 (file)
@@ -357,10 +357,15 @@ static ADS_STATUS libnet_join_set_machine_spn(TALLOC_CTX *mem_ctx,
        strupper_m(spn);
        spn_array[0] = spn;
 
-       if (name_to_fqdn(my_fqdn, r->in.machine_name) &&
-           !strequal(my_fqdn, r->in.machine_name)) {
+       if (!name_to_fqdn(my_fqdn, r->in.machine_name)
+           || (strchr(my_fqdn, '.') == NULL)) {
+               fstr_sprintf(my_fqdn, "%s.%s", r->in.machine_name,
+                            r->out.dns_domain_name);
+       }
+
+       strlower_m(my_fqdn);
 
-               strlower_m(my_fqdn);
+       if (!strequal(my_fqdn, r->in.machine_name)) {
                spn = talloc_asprintf(mem_ctx, "HOST/%s", my_fqdn);
                if (!spn) {
                        return ADS_ERROR_LDAP(LDAP_NO_MEMORY);