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, &notify->dst, 0, key, 15,
+				       &src, &notify->dst, 0, key, timeout,
 				       notify->zone->task,
 				       notify_done, notify,
 				       &notify->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