]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4466. [bug] Interface scanning didn't work on a Windows system
authorMark Andrews <marka@isc.org>
Thu, 8 Sep 2016 04:25:20 +0000 (14:25 +1000)
committerMark Andrews <marka@isc.org>
Thu, 8 Sep 2016 04:26:09 +0000 (14:26 +1000)
                        without a non local IPv6 addresses. [RT #43130]

(cherry picked from commit 61ca100b80ae5ef271219fa9468f0cfde9d64fb8)

CHANGES
lib/isc/win32/interfaceiter.c

diff --git a/CHANGES b/CHANGES
index f382ac35b8083f74b0d9e939657c5403ea61b5b4..36e2b3c6012a38dfd77adc6d7d542757a917c3c6 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4466.  [bug]           Interface scanning didn't work on a Windows system
+                       without a non local IPv6 addresses. [RT #43130]
+
 4465.  [bug]           Don't use "%z" as Windows doesn't support it.
                        [RT #43131]
 
index c4cba284e7506dd60911625c53d59449de5c652c..89c31e37463094f8a548b832743b29798d700c36 100644 (file)
@@ -375,7 +375,7 @@ internal_current6(isc_interfaceiter_t *iter) {
        memset(&iter->current, 0, sizeof(iter->current));
        iter->current.af = AF_INET6;
 
-       if (iter->pos6 != 0U || !iter->pos6zero) {
+       if (!iter->pos6zero) {
                if (iter->pos6 == 0U)
                        iter->pos6zero = ISC_TRUE;
                get_addr(AF_INET6, &iter->current.address,
@@ -466,9 +466,9 @@ internal_next(isc_interfaceiter_t *iter) {
 
 static isc_result_t
 internal_next6(isc_interfaceiter_t *iter) {
-       if (iter->pos6 == 0 && iter->v6loop)
+       if (iter->pos6 == 0U && iter->v6loop)
                return (ISC_R_NOMORE);
-       if (iter->pos6 != 0)
+       if (iter->pos6 != 0U)
                iter->pos6--;
        return (ISC_R_SUCCESS);
 }
@@ -489,7 +489,7 @@ isc_interfaceiter_first(isc_interfaceiter_t *iter) {
        if (iter->buf6 != NULL) {
                iter->pos6 = iter->buf6->iAddressCount;
                iter->v6loop = ISC_FALSE;
-               iter->pos6zero = ISC_FALSE;
+               iter->pos6zero = ISC_TF(iter->pos6 == 0U);
        }
        iter->result = ISC_R_SUCCESS;
        return (isc_interfaceiter_next(iter));