]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
dsgetdcname: return an IP address on rediscovery
authorUri Simchoni <uri@samba.org>
Thu, 3 Mar 2016 07:18:44 +0000 (09:18 +0200)
committerKarolin Seeger <kseeger@samba.org>
Mon, 20 Jun 2016 07:59:24 +0000 (09:59 +0200)
When dsgetdcname return its result based on discovery
process (instead of retrieving cached value), always
return the found server's IP address in dc_address field,
rather than its netbios name.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11769

Signed-off-by: Uri Simchoni <uri@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit ef84f4c018424b1fcc232a4780dc2c0435701d86)

source3/libsmb/dsgetdcname.c

index ac3bfd6c112e6692d340c3e4997a87fd435b5cec..673e10b427a2d8d5feb729e6ee23e08d3d86eb1d 100644 (file)
@@ -800,14 +800,14 @@ static NTSTATUS make_dc_info_from_cldap_reply(TALLOC_CTX *mem_ctx,
                print_sockaddr(addr, sizeof(addr), ss);
                dc_address = addr;
                dc_address_type = DS_ADDRESS_TYPE_INET;
-       }
-
-       if (!ss && r->sockaddr.pdc_ip) {
-               dc_address      = r->sockaddr.pdc_ip;
-               dc_address_type = DS_ADDRESS_TYPE_INET;
        } else {
-               dc_address      = r->pdc_name;
-               dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
+               if (r->sockaddr.pdc_ip) {
+                       dc_address      = r->sockaddr.pdc_ip;
+                       dc_address_type = DS_ADDRESS_TYPE_INET;
+               } else {
+                       dc_address      = r->pdc_name;
+                       dc_address_type = DS_ADDRESS_TYPE_NETBIOS;
+               }
        }
 
        map_dc_and_domain_names(flags,