[bind] host: handle "debug", "attempts" and "timeout" options in resolv.conf well

Adam Tkac atkac at fedoraproject.org
Tue Aug 10 11:27:18 UTC 2010


commit aa9e285744af7afa52c4cd32a81da273ab603e19
Author: Adam Tkac <atkac at redhat.com>
Date:   Tue Aug 10 13:27:02 2010 +0200

    host: handle "debug", "attempts" and "timeout" options in resolv.conf well
    
    Signed-off-by: Adam Tkac <atkac at redhat.com>

 bind.spec             |    7 ++-
 bind97-rh570851.patch |  153 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 159 insertions(+), 1 deletions(-)
---
diff --git a/bind.spec b/bind.spec
index ec05d45..c54c346 100644
--- a/bind.spec
+++ b/bind.spec
@@ -21,7 +21,7 @@ Summary:  The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv
 Name:     bind
 License:  ISC
 Version:  9.7.2
-Release:  0.1.%{PREVER}%{?dist}
+Release:  0.2.%{PREVER}%{?dist}
 Epoch:    32
 Url:      http://www.isc.org/products/BIND/
 Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -56,6 +56,7 @@ Patch102:bind-95-rh452060.patch
 Patch106:bind93-rh490837.patch
 Patch107:bind97-dist-pkcs11.patch
 Patch109:bind97-rh478718.patch
+Patch110:bind97-rh570851.patch
 
 # SDB patches
 Patch11: bind-9.3.2b2-sdbsrc.patch
@@ -237,6 +238,7 @@ mkdir m4
 %patch106 -p0 -b .rh490837
 %patch107 -p1 -b .dist-pkcs11
 %patch109 -p1 -b .rh478718
+%patch110 -p1 -b .rh570851
 
 # Sparc and s390 arches need to use -fPIE
 %ifarch sparcv9 sparc64 s390 s390x
@@ -672,6 +674,9 @@ rm -rf ${RPM_BUILD_ROOT}
 %endif
 
 %changelog
+* Tue Aug 10 2010 Adam Tkac <atkac redhat com> 32:9.7.2-0.2.b1
+- host: handle "debug", "attempts" and "timeout" options in resolv.conf well
+
 * Tue Aug 03 2010 Adam Tkac <atkac redhat com> 32:9.7.2-0.1.b1
 - update to 9.7.2b1
 - patches merged
diff --git a/bind97-rh570851.patch b/bind97-rh570851.patch
new file mode 100644
index 0000000..e24b94c
--- /dev/null
+++ b/bind97-rh570851.patch
@@ -0,0 +1,153 @@
+diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c
+--- bind-9.7.2b1/bin/dig/dighost.c.rh570851	2010-08-10 12:55:14.219403986 +0200
++++ bind-9.7.2b1/bin/dig/dighost.c	2010-08-10 12:56:40.716015777 +0200
+@@ -126,7 +126,8 @@ isc_boolean_t
+ 	usesearch = ISC_FALSE,
+ 	showsearch = ISC_FALSE,
+ 	qr = ISC_FALSE,
+-	is_dst_up = ISC_FALSE;
++	is_dst_up = ISC_FALSE,
++	verbose = ISC_FALSE;
+ in_port_t port = 53;
+ unsigned int timeout = 0;
+ unsigned int extrabytes;
+@@ -1240,10 +1241,24 @@ setup_system(void) {
+ 		}
+ 	}
+ 
++	if (lwconf->resdebug) {
++		verbose = ISC_TRUE;
++		debug("verbose is on");
++	}
+ 	if (ndots == -1) {
+ 		ndots = lwconf->ndots;
+ 		debug("ndots is %d.", ndots);
+ 	}
++	if (lwconf->attempts) {
++		tries = lwconf->attempts + 1;
++		if (tries < 2)
++			tries = 2;
++		debug("tries is %d.", tries);
++	}
++	if (lwconf->timeout) {
++		timeout = lwconf->timeout;
++		debug("timeout is %d.", timeout);
++	}
+ 
+ 	/* If user doesn't specify server use nameservers from resolv.conf. */
+ 	if (ISC_LIST_EMPTY(server_list))
+diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c
+--- bind-9.7.2b1/bin/dig/host.c.rh570851	2010-08-10 12:57:16.032758098 +0200
++++ bind-9.7.2b1/bin/dig/host.c	2010-08-10 13:02:12.848559845 +0200
+@@ -659,6 +659,7 @@ parse_args(isc_boolean_t is_batchfile, i
+ 
+ 	lookup->servfail_stops = ISC_FALSE;
+ 	lookup->comments = ISC_FALSE;
++	short_form = !verbose;
+ 
+ 	while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) {
+ 		switch (c) {
+@@ -869,8 +870,8 @@ main(int argc, char **argv) {
+ 	result = isc_app_start();
+ 	check_result(result, "isc_app_start");
+ 	setup_libs();
+-	parse_args(ISC_FALSE, argc, argv);
+ 	setup_system();
++	parse_args(ISC_FALSE, argc, argv);
+ 	result = isc_app_onrun(mctx, global_task, onrun_callback, NULL);
+ 	check_result(result, "isc_app_onrun");
+ 	isc_app_run();
+diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/include/dig/dig.h
+--- bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851	2010-08-10 13:02:32.722244088 +0200
++++ bind-9.7.2b1/bin/dig/include/dig/dig.h	2010-08-10 13:02:48.465158159 +0200
+@@ -278,6 +278,7 @@ extern isc_boolean_t debugging, memdebug
+ extern char *progname;
+ extern int tries;
+ extern int fatalexit;
++extern isc_boolean_t verbose;
+ #ifdef WITH_IDN
+ extern int idnoptions;
+ #endif
+diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/lwres/include/lwres/lwres.h
+--- bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851	2010-08-10 13:04:40.465780506 +0200
++++ bind-9.7.2b1/lib/lwres/include/lwres/lwres.h	2010-08-10 13:05:57.559867830 +0200
+@@ -243,6 +243,8 @@ typedef struct {
+ 	lwres_uint8_t	resdebug;      /*%< non-zero if 'options debug' set */
+ 	lwres_uint8_t	ndots;	       /*%< set to n in 'options ndots:n' */
+ 	lwres_uint8_t	no_tld_query;  /*%< non-zero if 'options no_tld_query' */
++	lwres_int32_t	attempts;      /*%< set to n in 'options attempts:n' */
++	lwres_int32_t	timeout;       /*%< set to n in 'options timeout:n' */
+ } lwres_conf_t;
+ 
+ #define LWRES_ADDRTYPE_V4		0x00000001U	/*%< ipv4 */
+diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwconfig.c
+--- bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851	2010-08-10 13:06:08.051778429 +0200
++++ bind-9.7.2b1/lib/lwres/lwconfig.c	2010-08-10 13:09:53.972555776 +0200
+@@ -237,6 +237,8 @@ lwres_conf_init(lwres_context_t *ctx) {
+ 	confdata->resdebug = 0;
+ 	confdata->ndots = 1;
+ 	confdata->no_tld_query = 0;
++	confdata->attempts = 0;
++	confdata->timeout = 0;
+ 
+ 	for (i = 0; i < LWRES_CONFMAXNAMESERVERS; i++)
+ 		lwres_resetaddr(&confdata->nameservers[i]);
+@@ -289,6 +291,8 @@ lwres_conf_clear(lwres_context_t *ctx) {
+ 	confdata->resdebug = 0;
+ 	confdata->ndots = 1;
+ 	confdata->no_tld_query = 0;
++	confdata->attempts = 0;
++	confdata->timeout = 0;
+ }
+ 
+ static lwres_result_t
+@@ -530,6 +534,8 @@ static lwres_result_t
+ lwres_conf_parseoption(lwres_context_t *ctx,  FILE *fp) {
+ 	int delim;
+ 	long ndots;
++	long attempts;
++	long timeout;
+ 	char *p;
+ 	char word[LWRES_CONFMAXLINELEN];
+ 	lwres_conf_t *confdata;
+@@ -546,6 +552,8 @@ lwres_conf_parseoption(lwres_context_t *
+ 			confdata->resdebug = 1;
+ 		} else if (strcmp("no_tld_query", word) == 0) {
+ 			confdata->no_tld_query = 1;
++		} else if (strcmp("debug", word) == 0) {
++			confdata->resdebug = 1;
+ 		} else if (strncmp("ndots:", word, 6) == 0) {
+ 			ndots = strtol(word + 6, &p, 10);
+ 			if (*p != '\0') /* Bad string. */
+@@ -553,6 +561,18 @@ lwres_conf_parseoption(lwres_context_t *
+ 			if (ndots < 0 || ndots > 0xff) /* Out of range. */
+ 				return (LWRES_R_FAILURE);
+ 			confdata->ndots = (lwres_uint8_t)ndots;
++		} else if (strncmp("timeout:", word, 8) == 0) {
++			timeout = strtol(word + 8, &p, 10);
++			if (*p != '\0') /* Bad string. */
++				return (LWRES_R_FAILURE);
++			confdata->timeout = (lwres_int32_t)timeout;
++		} else if (strncmp("attempts:", word, 9) == 0) {
++			attempts = strtol(word + 9, &p, 10);
++			if (*p != '\0') /* Bad string. */
++				return (LWRES_R_FAILURE);
++			if (attempts < 0) /* Out of range. */
++				return (LWRES_R_FAILURE);
++			confdata->attempts = (lwres_int32_t)attempts;
+ 		}
+ 
+ 		if (delim == EOF || delim == '\n')
+@@ -716,6 +736,12 @@ lwres_conf_print(lwres_context_t *ctx, F
+ 	if (confdata->no_tld_query)
+ 		fprintf(fp, "options no_tld_query\n");
+ 
++	if (confdata->attempts)
++		fprintf(fp, "options attempts:%d\n", confdata->attempts);
++
++	if (confdata->timeout)
++		fprintf(fp, "options timeout:%d\n", confdata->timeout);
++
+ 	return (LWRES_R_SUCCESS);
+ }
+ 


More information about the scm-commits mailing list