(send_dg): Recognize referral results and treat them as server errors.
authordrepper <drepper>
Fri, 8 Jul 2005 06:49:08 +0000 (06:49 +0000)
committerdrepper <drepper>
Fri, 8 Jul 2005 06:49:08 +0000 (06:49 +0000)
resolv/res_send.c

index 1a53e5b..6f12b88 100644 (file)
@@ -1008,11 +1008,19 @@ send_dg(res_state statp,
                        DprintQ(statp->options & RES_DEBUG,
                                (stdout, "server rejected query:\n"),
                                ans, (resplen > anssiz) ? anssiz : resplen);
+               next_ns:
                        res_nclose(statp);
                        /* don't retry if called from dig */
                        if (!statp->pfcode)
                                return (0);
                }
+               if (anhp->rcode == NOERROR && anhp->ancount == 0
+                   && anhp->aa == 0 && anhp->ra == 0 && anhp->arcount == 0) {
+                       DprintQ(statp->options & RES_DEBUG,
+                               (stdout, "referred query:\n"),
+                               ans, (resplen > anssiz) ? anssiz : resplen);
+                       goto next_ns;
+               }
                if (!(statp->options & RES_IGNTC) && anhp->tc) {
                        /*
                         * To get the rest of answer,