s3: libsmb/namequery: fallback to returning all dcs, when none is available in the...
authorStefan Metzmacher <metze@samba.org>
Mon, 27 Oct 2008 08:40:25 +0000 (09:40 +0100)
committerStefan Metzmacher <metze@samba.org>
Sat, 13 Dec 2008 17:43:45 +0000 (18:43 +0100)
It could happen that all dcs in a site are unavailable
(some sites have only one dc) and then we need to fallback
to get all dcs.

metze

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Günther Deschner <gd@samba.org>
(cherry picked from commit c127367b1dd622eeceb1f47de0a047c297dda222)
(cherry picked from commit 0c43f96330f2935805ba4f0f8f858a027a90bc4c)
(cherry picked from commit caaf59383ceabdc555f7db098dae0455dea65023)

source/libsmb/namequery.c

index 5945683236cc977d117f7c8d8ada9bb04809c49e..3335f5a599b3063a0fc75f4fc6b509c47876fd32 100644 (file)
@@ -2098,6 +2098,15 @@ NTSTATUS get_sorted_dc_list( const char *domain,
 
        status = get_dc_list(domain, sitename, ip_list,
                        count, lookup_type, &ordered);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NO_LOGON_SERVERS)
+           && sitename) {
+               DEBUG(3,("get_sorted_dc_list: no server for name %s available"
+                        " in site %s, fallback to all servers\n",
+                        domain, sitename));
+               status = get_dc_list(domain, NULL, ip_list,
+                                    count, lookup_type, &ordered);
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                SAFE_FREE(*ip_list);
                *count = 0;