[SCM] Samba Shared Repository - branch master updated

Matthieu Patou mat at samba.org
Wed Nov 2 04:16:04 MDT 2011


The branch, master has been updated
       via  251209b s4-resolver: make it work back with ipv4 only DNS records
      from  6b11c91 tdb2: don't be fascist when TDB_VERSION1 is specified.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 251209bd6f6e66ca9bcf28cd652d85d1cd729fdc
Author: Matthieu Patou <mat at matws.net>
Date:   Wed Nov 2 09:39:23 2011 +0100

    s4-resolver: make it work back with ipv4 only DNS records
    
    It turns out that if there is no AAAA record the dns server (bind and MS
    windows at least) do not return the A record when just asked for AAAA.
    
    Autobuild-User: Matthieu Patou <mat at samba.org>
    Autobuild-Date: Wed Nov  2 11:15:34 CET 2011 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 source4/libcli/resolve/dns_ex.c |   41 +++++++++++++++++++++++---------------
 1 files changed, 25 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c
index 60e9afd..993ef43 100644
--- a/source4/libcli/resolve/dns_ex.c
+++ b/source4/libcli/resolve/dns_ex.c
@@ -178,29 +178,38 @@ static struct dns_records_container get_a_aaaa_records(TALLOC_CTX *mem_ctx,
 	   to avoid them in the parent */
 	reply = rk_dns_lookup(name, "AAAA");
 
-	if (!reply) {
-		return ret;
-	}
+	count = count2 = 0;
+
+	if (reply) {
+
+		count = count_dns_rr(reply->head, rk_ns_t_aaaa);
+		count2 = count_dns_rr(reply->head, rk_ns_t_a);
+
+		if (!count2) {
+			/*
+			* DNS server didn't returned A when asked for AAAA records.
+			* Most of the server do it, let's ask for A specificaly.
+			*/
+			reply2 = rk_dns_lookup(name, "A");
 
-	count = count_dns_rr(reply->head, rk_ns_t_aaaa);
-	count2 = count_dns_rr(reply->head, rk_ns_t_a);
+			if (!reply2) {
+				return ret;
+			}
 
-	if (!count2) {
-		/*
-		 * DNS server didn't returned A when asked for AAAA records.
-		 * Most of the server do it, let's ask for A specificaly.
-		 */
-		reply2 = rk_dns_lookup(name, "A");
+			count2 = count_dns_rr(reply2->head, rk_ns_t_a);
+		} else {
+			reply2 = NULL;
+		}
+	} else {
 
-		if (!reply2) {
+		reply = rk_dns_lookup(name, "A");
+		if (!reply) {
 			return ret;
 		}
 
-		count2 = count_dns_rr(reply2->head, rk_ns_t_a);
-	} else {
 		reply2 = NULL;
+		count = count_dns_rr(reply->head, rk_ns_t_a);
 	}
-
 	count += count2;
 
 	if (count == 0) {
@@ -322,7 +331,7 @@ static struct dns_records_container get_srv_records(TALLOC_CTX *mem_ctx,
 
 			addrs = talloc_realloc(mem_ctx, addrs, char*, total);
 			for (j=0; j < c.count; j++) {
-				addrs[total - j] = talloc_steal(addrs, c.list[j]);
+				addrs[total - j - 1] = talloc_steal(addrs, c.list[j]);
 			}
 		}
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list