summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ypserv
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>1997-07-28 14:13:57 +0000
committerwpaul <wpaul@FreeBSD.org>1997-07-28 14:13:57 +0000
commitb0b11b66e988857590d20cf377d4e7de9e8a0837 (patch)
tree2146b9d04d03ad056aa2258fb1b3e9b2b0bac1d0 /usr.sbin/ypserv
parentcf77de89f4bd696d8178c536b220d4fc55a0632e (diff)
downloadFreeBSD-src-b0b11b66e988857590d20cf377d4e7de9e8a0837.zip
FreeBSD-src-b0b11b66e988857590d20cf377d4e7de9e8a0837.tar.gz
Fix for PR #4147: apparently BIND now returns a status of NO_RECOVERY
at the end of gethostanswer()/getanswer()/whatever where it used to return TRY_AGAIN. This breaks the domain list traversal in ypserv's async DNS lookup module: it would only retry using the domain(s) from the 'domain' or 'search' lines in /etc/resolv.conf if __dns_getanswer() returned TRY_AGAIN. Changed the test so that either TRY_AGAIN or NO_RECOVERY will work. This seemed to me the best solution in the event somebody tries to compile this code on an older system with a different version of BIND. (You shouldn't do that of course, but then there's a lot of things in the world that you shouldn't do and people do them anyway.)
Diffstat (limited to 'usr.sbin/ypserv')
-rw-r--r--usr.sbin/ypserv/yp_dnslookup.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/usr.sbin/ypserv/yp_dnslookup.c b/usr.sbin/ypserv/yp_dnslookup.c
index e330e15..282bdcb 100644
--- a/usr.sbin/ypserv/yp_dnslookup.c
+++ b/usr.sbin/ypserv/yp_dnslookup.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: yp_dnslookup.c,v 1.10 1997/02/22 16:15:10 peter Exp $
+ * $Id: yp_dnslookup.c,v 1.11 1997/07/27 03:41:53 wpaul Exp $
*/
/*
@@ -65,7 +65,7 @@
#include "yp_extern.h"
#ifndef lint
-static const char rcsid[] = "$Id: yp_dnslookup.c,v 1.10 1997/02/22 16:15:10 peter Exp $";
+static const char rcsid[] = "$Id: yp_dnslookup.c,v 1.11 1997/07/27 03:41:53 wpaul Exp $";
#endif
static char *parse(hp)
@@ -390,7 +390,8 @@ void yp_run_dnsq()
* query has failed.
*/
if (hent == NULL) {
- if (h_errno == TRY_AGAIN && q->domain && *q->domain) {
+ if ((h_errno == TRY_AGAIN || h_errno == NO_RECOVERY)
+ && q->domain && *q->domain) {
snprintf(retrybuf, sizeof(retrybuf), "%s.%s",
q->name, *q->domain);
if (debug)
OpenPOWER on IntegriCloud