From 059523e2036d8a2215fd4ea59047e2d9dacce062 Mon Sep 17 00:00:00 2001 From: Matthieu Patou Date: Mon, 21 Nov 2011 23:37:03 +0100 Subject: s4-resolver: do not use all the A and AAAA records, those after a NS are not the one we want to use --- source4/dsdb/repl/drepl_out_helpers.c | 2 +- source4/libcli/resolve/dns_ex.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'source4') diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c index 8cfafb9527..16825d400b 100644 --- a/source4/dsdb/repl/drepl_out_helpers.c +++ b/source4/dsdb/repl/drepl_out_helpers.c @@ -845,7 +845,7 @@ static void dreplsrv_update_refs_done(struct tevent_req *subreq) * running production as this error otherwise never happen and * due to the fact the send a DsReplicaUpdateRefs after each getNcChanges */ - if (!W_ERROR_EQUAL(werr, WERR_DS_DRA_BUSY)) { + if (!W_ERROR_EQUAL(r->out.result, WERR_DS_DRA_BUSY)) { tevent_req_nterror(req, status); return; } diff --git a/source4/libcli/resolve/dns_ex.c b/source4/libcli/resolve/dns_ex.c index 20f2c0c03a..9467521394 100644 --- a/source4/libcli/resolve/dns_ex.c +++ b/source4/libcli/resolve/dns_ex.c @@ -89,6 +89,14 @@ static uint32_t count_dns_rr(struct rk_resource_record *head, unsigned record_ty continue; } + if (rr->type == rk_ns_t_ns) { + /* + * Record that will follow will be related to the NS + * not what we are really interested with. + * It's a good idea not to count them + */ + break; + } /* we are only interested by requested record */ if (rr->type != record_type) { continue; @@ -234,6 +242,14 @@ static struct dns_records_container get_a_aaaa_records(TALLOC_CTX *mem_ctx, continue; } + if (rr->type == rk_ns_t_ns) { + /* + * After the record for NS will come the A or AAAA + * record of the NS. + */ + break; + } + /* we are only interested in A and AAAA records */ if (rr->type != rk_ns_t_a && rr->type != rk_ns_t_aaaa) { continue; -- cgit