diff options
author | Matthieu Patou <mat@matws.net> | 2011-11-21 23:37:03 +0100 |
---|---|---|
committer | Matthieu Patou <mat@matws.net> | 2011-12-05 18:23:08 +0100 |
commit | 059523e2036d8a2215fd4ea59047e2d9dacce062 (patch) | |
tree | d7f92e1c107f3543163b256022013e94c80a4670 /source4 | |
parent | 2f8a84bb7b430c68c06f4121df6905b163f7ae71 (diff) | |
download | samba-059523e2036d8a2215fd4ea59047e2d9dacce062.tar.gz |
s4-resolver: do not use all the A and AAAA records, those after a NS are not the one we want to use
Diffstat (limited to 'source4')
-rw-r--r-- | source4/dsdb/repl/drepl_out_helpers.c | 2 | ||||
-rw-r--r-- | source4/libcli/resolve/dns_ex.c | 16 |
2 files changed, 17 insertions, 1 deletions
diff --git a/source4/dsdb/repl/drepl_out_helpers.c b/source4/dsdb/repl/drepl_out_helpers.c index 8cfafb9527e..16825d400b5 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 20f2c0c03ae..9467521394e 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; |