--- bind-9.3.0/lib/dns/resolver.c.handle_send_errors 2004-08-28 02:25:19.000000000 -0400 +++ bind-9.3.0/lib/dns/resolver.c 2004-11-24 18:40:24.024030000 -0500 @@ -792,7 +792,19 @@ resquery_destroy(&query); } } else if (sevent->result != ISC_R_SUCCESS) + { + switch (sevent->result) + {/* handle "fatal" send errors by firing timer sooner: */ + case ISC_R_NETUNREACH: + case ISC_R_HOSTUNREACH: + case ISC_R_CONNREFUSED: + case ISC_R_NOPERM: + case ISC_R_ADDRNOTAVAIL: + isc_interval_set(&(query->fctx->interval), 0, 100); + fctx_startidletimer(query->fctx); + } fctx_cancelquery(&query, NULL, NULL, ISC_FALSE); + } isc_event_free(&event); }