* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: resolver.c,v 1.296 2004/10/21 01:53:44 marka Exp $ */
+/* $Id: resolver.c,v 1.297 2004/11/10 21:46:48 marka Exp $ */
#include <config.h>
*/
INSIST(no_response);
rtt = query->addrinfo->srtt +
- (100000 * fctx->restarts);
+ (200000 * fctx->restarts);
if (rtt > 10000000)
rtt = 10000000;
/*
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)
+ /*
+ * No route to remote.
+ */
+ 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);
ISC_FALSE);
fctx_done(fctx, result);
}
+ } else if (sevent->result == ISC_R_HOSTUNREACH ||
+ sevent->result == ISC_R_NETUNREACH) {
+ /*
+ * No route to remote.
+ */
+ 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);
isc_event_free(&event);
}
-
-
static void
fctx_finddone(isc_task_t *task, isc_event_t *event) {
fetchctx_t *fctx;