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 <[email protected]>
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 <[email protected]>
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