dns: fix comments and make s4/libcli/resolve dns resolver working
authorAlexander Bokovoy <ab@samba.org>
Tue, 15 May 2012 13:28:44 +0000 (16:28 +0300)
committerAlexander Bokovoy <ab@samba.org>
Wed, 23 May 2012 14:51:49 +0000 (17:51 +0300)
After migrating to use libaddns, reply_to_addrs() needed to change the
way answers are iterated through. Originally libroken implementation
gave all answers as separate records with last one being explicitly NULL.
libaddns unmarshalling code gives all non-NULL answers and should be
iterated with explicit reply->num_answers in use.

lib/addns/dnsquery.c
source4/libcli/resolve/dns_ex.c

index 4b45722471838d719f84840a4fc1eea1822070d8..57ef8d92f4ac7b9dff4b170c860bc88d50cbc00b 100644 (file)
@@ -316,7 +316,7 @@ static NTSTATUS dns_send_req( TALLOC_CTX *ctx, const char *name, int q_type,
              NT_STATUS_EQUAL(last_dns_status,NT_STATUS_CONNECTION_REFUSED)) &&
             (last_dns_check+DNS_FAILED_WAITTIME) > now )
        {
-               DEBUG(10,("last_dns_check: Returning cached status (%s)\n",
+               DEBUG(10,("dns_send_req: last dns check returning cached status (%s)\n",
                          nt_errstr(last_dns_status) ));
                return last_dns_status;
        }
@@ -331,7 +331,7 @@ static NTSTATUS dns_send_req( TALLOC_CTX *ctx, const char *name, int q_type,
                if (buf_len) {
                        if ((buffer = talloc_array(ctx, uint8_t, buf_len))
                                        == NULL ) {
-                               DEBUG(0,("ads_dns_lookup_srv: "
+                               DEBUG(0,("dns_send_req: "
                                        "talloc() failed!\n"));
                                last_dns_status = NT_STATUS_NO_MEMORY;
                                last_dns_check = time_mono(NULL);
@@ -341,7 +341,7 @@ static NTSTATUS dns_send_req( TALLOC_CTX *ctx, const char *name, int q_type,
 
                if ((resp_len = res_query(name, C_IN, q_type, buffer, buf_len))
                                < 0 ) {
-                       DEBUG(3,("ads_dns_lookup_srv: "
+                       DEBUG(3,("dns_send_req: "
                                "Failed to resolve %s (%s)\n",
                                name, strerror(errno)));
                        TALLOC_FREE( buffer );
index 3b303d261f9853b3ab1b53cb2e070d703616a974..7f5b84191a1312fab09a0e6789231658133b5bfc 100644 (file)
@@ -98,7 +98,7 @@ static int reply_to_addrs(TALLOC_CTX *mem_ctx, uint32_t *a_num,
        }
        *cur_addrs = addrs;
 
-       for (i = 0; reply->answers[i]; i++) {
+       for (i = 0; i < reply->num_answers; i++) {
                rr = reply->answers[i];
 
                /* we are only interested in the IN class */