--- ipcache.c.orig Mon Oct 30 11:29:58 2000 +++ ipcache.c Tue Oct 31 09:46:01 2000 @@ -372,6 +372,7 @@ i.addrs.in_addrs = xcalloc(na, sizeof(struct in_addr)); i.addrs.bad_mask = xcalloc(na, sizeof(unsigned char)); i.addrs.count = (unsigned char) na; + i.addrs.cur = i.addrs.count - 1; for (j = 0, k = 0; k < nr; k++) { if (answers[k].type != RFC1035_TYPE_A) continue; @@ -727,10 +728,11 @@ ia = &i->addrs; } for (k = 0; k < ia->count; k++) { - if (++ia->cur == ia->count) - ia->cur = 0; if (!ia->bad_mask[ia->cur]) break;; + if (ia->cur == 0) + ia->cur = ia->count; + ia->cur--; } if (k == ia->count) { /* All bad, reset to All good */ @@ -741,8 +743,8 @@ ia->badcount = 0; ia->cur = 0; } - debug(14, 3) ("ipcacheCycleAddr: %s now at %s\n", name, - inet_ntoa(ia->in_addrs[ia->cur])); + debug(14, 3) ("ipcacheCycleAddr: %s now at %s(%d)\n", name, + inet_ntoa(ia->in_addrs[ia->cur]), ia->cur); } /*