s4:cldap_server/netlogon.c - DS_SERVER_CLOSEST handling
authorMatthias Dieter Wallnöfer <mdw@samba.org>
Thu, 24 Nov 2011 08:25:35 +0000 (09:25 +0100)
committerStefan Metzmacher <metze@samba.org>
Sun, 27 Nov 2011 11:50:48 +0000 (12:50 +0100)
DS_SERVER_CLOSEST is only set when the client and server site coincide.

MS-NRPC 2.2.1.2.1

Signed-off-by: Stefan Metzmacher <metze@samba.org>
source4/cldap_server/netlogon.c

index c9c92f6343d00d1f31e9387d106a89f749eae22a..0c4abebf8354a0da73d386325e0650e2b34ecf7d 100644 (file)
@@ -224,7 +224,6 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,
                
        server_type      = 
                DS_SERVER_DS | DS_SERVER_TIMESERV |
-               DS_SERVER_CLOSEST |
                DS_SERVER_GOOD_TIMESERV;
 
 #if 0
@@ -276,13 +275,17 @@ NTSTATUS fill_netlogon_samlogon_response(struct ldb_context *sam_ctx,
                                           dns_domain);
        NT_STATUS_HAVE_NO_MEMORY(pdc_dns_name);
        flatname         = lpcfg_workgroup(lp_ctx);
+
        server_site      = samdb_server_site_name(sam_ctx, mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(server_site);
        client_site      = samdb_client_site_name(sam_ctx, mem_ctx,
                                                  src_address, NULL);
        NT_STATUS_HAVE_NO_MEMORY(client_site);
-       load_interface_list(mem_ctx, lp_ctx, &ifaces);
+       if (strcasecmp(server_site, client_site) == 0) {
+               server_type |= DS_SERVER_CLOSEST;
+       }
 
+       load_interface_list(mem_ctx, lp_ctx, &ifaces);
        if (src_address) {
                pdc_ip = iface_list_best_ip(ifaces, src_address);
        } else {