Apply by doing: cd /usr/src patch -p0 < 032_bind.patch Then rebuild and install bind: cd usr.sbin/bind make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install Index: usr.sbin/bind/lib/dns/resolver.c =================================================================== RCS file: /cvs/src/usr.sbin/bind/lib/dns/resolver.c,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -p -r1.3 -r1.3.2.1 --- usr.sbin/bind/lib/dns/resolver.c 15 Apr 2003 13:20:17 -0000 1.3 +++ usr.sbin/bind/lib/dns/resolver.c 5 Nov 2004 01:38:08 -0000 1.3.2.1 @@ -396,7 +396,7 @@ fctx_cancelquery(resquery_t **queryp, dn */ INSIST(no_response); rtt = query->addrinfo->srtt + - (100000 * fctx->restarts); + (200000 * fctx->restarts); if (rtt > 10000000) rtt = 10000000; /* @@ -608,7 +608,10 @@ resquery_senddone(isc_task_t *task, isc_ isc_socket_detach(&query->tcpsocket); resquery_destroy(&query); } - } else if (sevent->result != ISC_R_SUCCESS) + } else if (sevent->result == ISC_R_HOSTUNREACH || + sevent->result == ISC_R_NETUNREACH) + fctx_cancelquery(&query, NULL, NULL, ISC_TRUE); + else if (sevent->result != ISC_R_SUCCESS) fctx_cancelquery(&query, NULL, NULL, ISC_FALSE); isc_event_free(&event); @@ -1189,6 +1192,10 @@ resquery_connected(isc_task_t *task, isc ISC_FALSE); fctx_done(fctx, result); } + } else if (sevent->result == ISC_R_HOSTUNREACH || + sevent->result == ISC_R_NETUNREACH) { + isc_socket_detach(&query->tcpsocket); + fctx_cancelquery(&query, NULL, NULL, ISC_TRUE); } else { isc_socket_detach(&query->tcpsocket); fctx_cancelquery(&query, NULL, NULL, ISC_FALSE);