bind 9.1.1: failing zone tranfers
Mark.Andrews at nominum.com
Mark.Andrews at nominum.com
Thu Apr 26 23:22:37 UTC 2001
>
> Hmm, I'll try that again (this time without unexpected truncation)...
>
> > > Yes, your dial on demand software is dropping the packet
> > > or took too long to establish the link.
> >
> > The software I use is the same as before with bind-8.2.3.
BIND 9 is a complete re-write.
> > But there were no problems with zone transfers with dialup.
So far you have not provided any information that indicates that
that you are loosing anything but the first packet and retries
will take care of that. If you want people to help you need
to provide more information.
You havn't indicated that you are seeing other errors and named
will be logging other errors if it is seeing them.
> >
> I was getting problems with "timed out" and even "retries exceeded", despite
> the fact that I could see by using snoop on both ends that each request was
> receiving an immediate response.
> On the off-chance I tried explicitly setting the max-transfer-time-in and
> max-transfer-idle-in to their default values (120 and 60 respectively).
> Since then I've not been getting timeouts.
>
> Try adding:
>
> max-transfer-time-in 120;
> max-transfer-idle-in 60;
>
> to your options.
These won't affect the UDP refesh queries / UDP notifies. They
do affect the AXFR/IXFR streams however.
See all three calls to dns_request_createvia() in lib/dns/zone.c,
the timeout is set at 15 seconds. The following patch sets the
timeout to 30 seconds for dialup zones. The diff is not from the
release branch so there may be some fuzz. This should help if the
reason that the first couple of packets are timing out is because
it is taking too long to establish the link.
Mark
Index: lib/dns/zone.c
===================================================================
RCS file: /proj/cvs/isc/bind9/lib/dns/zone.c,v
retrieving revision 1.318
diff -u -r1.318 zone.c
--- zone.c 2001/04/10 19:19:49 1.318
+++ zone.c 2001/04/26 23:10:01
@@ -2388,6 +2388,7 @@
dns_tsigkey_t *key = NULL;
char addrbuf[ISC_SOCKADDR_FORMATSIZE];
isc_sockaddr_t src;
+ int timeout;
notify = event->ev_arg;
REQUIRE(DNS_NOTIFY_VALID(notify));
@@ -2430,8 +2431,11 @@
result = ISC_R_NOTIMPLEMENTED;
goto cleanup_key;
}
+ timeout = 15;
+ if (DNS_ZONE_FLAG(notify->zone, DNS_ZONEFLG_DIALNOTIFY))
+ timeout = 30;
result = dns_request_createvia(notify->zone->view->requestmgr, message,
- &src, ¬ify->dst, 0, key, 15,
+ &src, ¬ify->dst, 0, key, timeout,
notify->zone->task,
notify_done, notify,
¬ify->request);
@@ -3346,6 +3350,7 @@
isc_uint32_t options;
isc_sockaddr_t src;
isc_boolean_t cancel = ISC_TRUE;
+ int timeout;
REQUIRE(DNS_ZONE_VALID(zone));
@@ -3390,9 +3395,12 @@
goto cleanup;
}
zone_iattach(zone, &dummy);
+ timeout = 15;
+ if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DIALREFRESH))
+ timeout = 30;
result = dns_request_createvia(zone->view->requestmgr, message,
&src, &zone->masteraddr, options, key,
- 15 /* XXX */, zone->task,
+ timeout, zone->task,
refresh_callback, zone, &zone->request);
if (result != ISC_R_SUCCESS) {
zone_idetach(&dummy);
@@ -3425,6 +3433,7 @@
dns_tsigkey_t *key = NULL;
dns_dbnode_t *node = NULL;
isc_sockaddr_t src;
+ int timeout;
REQUIRE(DNS_ZONE_VALID(zone));
REQUIRE((soardataset != NULL && stub == NULL) ||
@@ -3527,9 +3536,12 @@
result = ISC_R_NOTIMPLEMENTED;
goto cleanup;
}
+ timeout = 15;
+ if (DNS_ZONE_FLAG(zone, DNS_ZONEFLG_DIALREFRESH))
+ timeout = 30;
result = dns_request_createvia(zone->view->requestmgr, message,
&src, &zone->masteraddr,
- DNS_REQUESTOPT_TCP, key, 15 /* XXX */,
+ DNS_REQUESTOPT_TCP, key, timeout,
zone->task, stub_callback, stub,
&zone->request);
if (result != ISC_R_SUCCESS) {
>
> Hope that helps,
>
> Thomas Hudson
> Sysadmin
> Infocom (UK) Ltd
>
>
--
Mark Andrews, Nominum Inc.
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET: Mark.Andrews at nominum.com
More information about the bind-users
mailing list