summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Tkac <atkac@redhat.com>2011-02-18 15:41:12 +0100
committerAdam Tkac <atkac@redhat.com>2011-02-18 15:41:12 +0100
commit9dbbf53ecc15d043d050befa6c5c143481511c1b (patch)
tree9af43f5b5cf18e3527b1f07cdff00a13764f8eda
parentb783612511b8cff9d65849d11032c2793bc781c7 (diff)
downloadbind-9dbbf53ecc15d043d050befa6c5c143481511c1b.tar.gz
bind-9dbbf53ecc15d043d050befa6c5c143481511c1b.tar.xz
bind-9dbbf53ecc15d043d050befa6c5c143481511c1b.zip
Update to 9.7.3 + minor fixes.
- fix dig +trace on dualstack systems (#674334) - fix linkage order when building on system with older BIND (#665971) - reduce number of gcc warnings Signed-off-by: Adam Tkac <atkac@redhat.com>
-rw-r--r--.gitignore1
-rw-r--r--bind.spec20
-rw-r--r--bind97-cleanup.patch444
-rw-r--r--bind97-rh665971.patch24
-rw-r--r--bind97-rh674334.patch122
-rw-r--r--sources2
6 files changed, 608 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index ef8f8e3..fe44837 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,4 @@ bind-9.7.2b1.tar.gz
/bind-9.7.2-P3.tar.gz
/bind-9.7.3b1.tar.gz
/bind-9.7.3rc1.tar.gz
+/bind-9.7.3.tar.gz
diff --git a/bind.spec b/bind.spec
index d77ad3a..aae116d 100644
--- a/bind.spec
+++ b/bind.spec
@@ -3,10 +3,10 @@
#
#%define PATCHVER P3
-%define PREVER rc1
-#%define VERSION %{version}
+#%define PREVER rc1
#%define VERSION %{version}-%{PATCHVER}
-%define VERSION %{version}%{PREVER}
+#%define VERSION %{version}%{PREVER}
+%define VERSION %{version}
%{?!SDB: %define SDB 1}
%{?!test: %define test 0}
@@ -22,7 +22,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv
Name: bind
License: ISC
Version: 9.7.3
-Release: 0.6.%{PREVER}%{?dist}
+Release: 1%{?dist}
Epoch: 32
Url: http://www.isc.org/products/BIND/
Buildroot:%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -61,6 +61,9 @@ Patch109:bind97-rh478718.patch
Patch110:bind97-rh570851.patch
Patch111:bind97-exportlib.patch
Patch112:bind97-rh645544.patch
+Patch113:bind97-rh674334.patch
+Patch114:bind97-rh665971.patch
+Patch115:bind97-cleanup.patch
# SDB patches
Patch11: bind-9.3.2b2-sdbsrc.patch
@@ -296,6 +299,9 @@ mkdir m4
%patch110 -p1 -b .rh570851
%patch111 -p1 -b .exportlib
%patch112 -p1 -b .rh645544
+%patch113 -p1 -b .rh674334
+%patch114 -p1 -b .rh665971
+%patch115 -p1 -b .cleanup
# Sparc and s390 arches need to use -fPIE
%ifarch sparcv9 sparc64 s390 s390x
@@ -764,6 +770,12 @@ rm -rf ${RPM_BUILD_ROOT}
%endif
%changelog
+* Fri Feb 18 2011 Adam Tkac <atkac redhat com> 32:9.7.3-1
+- update to 9.7.3
+- fix dig +trace on dualstack systems (#674334)
+- fix linkage order when building on system with older BIND (#665971)
+- reduce number of gcc warnings
+
* Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 32:9.7.3-0.6.rc1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
diff --git a/bind97-cleanup.patch b/bind97-cleanup.patch
new file mode 100644
index 0000000..6103237
--- /dev/null
+++ b/bind97-cleanup.patch
@@ -0,0 +1,444 @@
+diff -up bind-9.7.3/bin/dig/dighost.c.cleanup bind-9.7.3/bin/dig/dighost.c
+--- bind-9.7.3/bin/dig/dighost.c.cleanup 2011-02-18 15:28:59.505352049 +0100
++++ bind-9.7.3/bin/dig/dighost.c 2011-02-18 15:29:22.065302188 +0100
+@@ -4300,7 +4300,6 @@ opentmpkey(isc_mem_t *mctx, const char *
+ char *tempnamekey = NULL;
+ int tempnamelen;
+ int tempnamekeylen;
+- char *x;
+ char *cp;
+ isc_uint32_t which;
+
+@@ -4323,11 +4322,11 @@ opentmpkey(isc_mem_t *mctx, const char *
+ return (ISC_R_FAILURE);
+ }
+
+- x = cp--;
++ cp--;
+ while (cp >= tempname && *cp == 'X') {
+ isc_random_get(&which);
+ *cp = alphnum[which % (sizeof(alphnum) - 1)];
+- x = cp--;
++ cp--;
+ }
+
+ tempnamekeylen = tempnamelen+5;
+diff -up bind-9.7.3/bin/dnssec/dnssec-signzone.c.cleanup bind-9.7.3/bin/dnssec/dnssec-signzone.c
+--- bind-9.7.3/bin/dnssec/dnssec-signzone.c.cleanup 2011-02-18 15:29:34.615274529 +0100
++++ bind-9.7.3/bin/dnssec/dnssec-signzone.c 2011-02-18 15:29:51.075239402 +0100
+@@ -1467,7 +1467,6 @@ verifyzone(void) {
+ isc_boolean_t done = ISC_FALSE;
+ isc_boolean_t first = ISC_TRUE;
+ isc_boolean_t goodksk = ISC_FALSE;
+- isc_boolean_t goodzsk = ISC_FALSE;
+ isc_result_t result;
+ unsigned char revoked_ksk[256];
+ unsigned char revoked_zsk[256];
+@@ -1569,7 +1568,6 @@ verifyzone(void) {
+ #endif
+ if (zsk_algorithms[dnskey.algorithm] != 255)
+ zsk_algorithms[dnskey.algorithm]++;
+- goodzsk = ISC_TRUE;
+ } else {
+ if (standby_zsk[dnskey.algorithm] != 255)
+ standby_zsk[dnskey.algorithm]++;
+diff -up bind-9.7.3/bin/named/server.c.cleanup bind-9.7.3/bin/named/server.c
+--- bind-9.7.3/bin/named/server.c.cleanup 2011-02-18 15:27:38.565530746 +0100
++++ bind-9.7.3/bin/named/server.c 2011-02-18 15:27:55.065494317 +0100
+@@ -1413,7 +1413,6 @@ configure_view(dns_view_t *view, cfg_par
+ isc_uint32_t max_clients_per_query;
+ const char *sep = ": view ";
+ const char *viewname = view->name;
+- const char *forview = " for view ";
+ isc_boolean_t rfc1918;
+ isc_boolean_t empty_zones_enable;
+ const cfg_obj_t *disablelist = NULL;
+@@ -1458,7 +1457,6 @@ configure_view(dns_view_t *view, cfg_par
+ if (!strcmp(viewname, "_default")) {
+ sep = "";
+ viewname = "";
+- forview = "";
+ }
+
+ /*
+diff -up bind-9.7.3/contrib/dlz/drivers/dlz_postgres_driver.c.cleanup bind-9.7.3/contrib/dlz/drivers/dlz_postgres_driver.c
+--- bind-9.7.3/contrib/dlz/drivers/dlz_postgres_driver.c.cleanup 2011-02-18 15:28:16.135447795 +0100
++++ bind-9.7.3/contrib/dlz/drivers/dlz_postgres_driver.c 2011-02-18 15:28:43.815387080 +0100
+@@ -292,8 +292,10 @@ postgres_get_resultset(const char *zone,
+ unsigned int i = 0;
+ unsigned int j = 0;
+
++#if 0
+ /* temporarily get a unique thread # */
+ unsigned int dlz_thread_num = 1+(int) (1000.0*rand()/(RAND_MAX+1.0));
++#endif
+
+ REQUIRE(*rs == NULL);
+
+diff -up bind-9.7.3/lib/bind9/check.c.cleanup bind-9.7.3/lib/bind9/check.c
+--- bind-9.7.3/lib/bind9/check.c.cleanup 2011-02-18 15:26:31.305679252 +0100
++++ bind-9.7.3/lib/bind9/check.c 2011-02-18 15:27:21.205572047 +0100
+@@ -1818,8 +1818,6 @@ check_trusted_key(const cfg_obj_t *key,
+ isc_log_t *logctx)
+ {
+ const char *keystr, *keynamestr;
+- dns_fixedname_t fkeyname;
+- dns_name_t *keyname;
+ isc_buffer_t keydatabuf;
+ isc_region_t r;
+ isc_result_t result = ISC_R_SUCCESS;
+@@ -1830,7 +1828,6 @@ check_trusted_key(const cfg_obj_t *key,
+ flags = cfg_obj_asuint32(cfg_tuple_get(key, "flags"));
+ proto = cfg_obj_asuint32(cfg_tuple_get(key, "protocol"));
+ alg = cfg_obj_asuint32(cfg_tuple_get(key, "algorithm"));
+- keyname = dns_fixedname_name(&fkeyname);
+ keynamestr = cfg_obj_asstring(cfg_tuple_get(key, "name"));
+
+ if (flags > 0xffff) {
+diff -up bind-9.7.3/lib/dns/adb.c.cleanup bind-9.7.3/lib/dns/adb.c
+--- bind-9.7.3/lib/dns/adb.c.cleanup 2011-02-18 15:18:50.436696481 +0100
++++ bind-9.7.3/lib/dns/adb.c 2011-02-18 15:19:16.686638556 +0100
+@@ -1853,7 +1853,6 @@ check_expire_name(dns_adbname_t **namep,
+ static void
+ check_stale_name(dns_adb_t *adb, int bucket, isc_stdtime_t now) {
+ int victims, max_victims;
+- isc_boolean_t result;
+ dns_adbname_t *victim, *next_victim;
+ isc_boolean_t overmem = isc_mem_isovermem(adb->mctx);
+ int scans = 0;
+@@ -1875,7 +1874,7 @@ check_stale_name(dns_adb_t *adb, int buc
+ INSIST(!NAME_DEAD(victim));
+ scans++;
+ next_victim = ISC_LIST_PREV(victim, plink);
+- result = check_expire_name(&victim, now);
++ (void) check_expire_name(&victim, now);
+ if (victim == NULL) {
+ victims++;
+ goto next;
+diff -up bind-9.7.3/lib/dns/diff.c.cleanup bind-9.7.3/lib/dns/diff.c
+--- bind-9.7.3/lib/dns/diff.c.cleanup 2011-02-18 15:20:02.006538543 +0100
++++ bind-9.7.3/lib/dns/diff.c 2011-02-18 15:20:28.426480612 +0100
+@@ -264,7 +264,6 @@ diff_apply(dns_diff_t *diff, dns_db_t *d
+ dns_rdataset_t rds;
+ dns_rdataset_t ardataset;
+ dns_rdataset_t *modified = NULL;
+- isc_boolean_t offline;
+
+ op = t->op;
+ type = t->rdata.type;
+@@ -301,7 +300,6 @@ diff_apply(dns_diff_t *diff, dns_db_t *d
+ CHECK(dns_db_findnsec3node(db, name, ISC_TRUE,
+ &node));
+
+- offline = ISC_FALSE;
+ while (t != NULL &&
+ dns_name_equal(&t->name, name) &&
+ t->op == op &&
+@@ -323,8 +321,6 @@ diff_apply(dns_diff_t *diff, dns_db_t *d
+ namebuf, typebuf, classbuf,
+ (unsigned long) t->ttl,
+ (unsigned long) rdl.ttl);
+- if (t->rdata.flags & DNS_RDATA_OFFLINE)
+- offline = ISC_TRUE;
+ ISC_LIST_APPEND(rdl.rdata, &t->rdata, link);
+ t = ISC_LIST_NEXT(t, link);
+ }
+diff -up bind-9.7.3/lib/dns/dnssec.c.cleanup bind-9.7.3/lib/dns/dnssec.c
+--- bind-9.7.3/lib/dns/dnssec.c.cleanup 2011-02-18 15:20:39.306456222 +0100
++++ bind-9.7.3/lib/dns/dnssec.c 2011-02-18 15:21:31.896340160 +0100
+@@ -1068,7 +1068,6 @@ isc_result_t
+ dns_dnsseckey_create(isc_mem_t *mctx, dst_key_t **dstkey,
+ dns_dnsseckey_t **dkp)
+ {
+- isc_result_t result;
+ dns_dnsseckey_t *dk;
+ int major, minor;
+
+@@ -1094,7 +1093,7 @@ dns_dnsseckey_create(isc_mem_t *mctx, ds
+ dk->ksk = ISC_TF((dst_key_flags(dk->key) & DNS_KEYFLAG_KSK) != 0);
+
+ /* Is this an old-style key? */
+- result = dst_key_getprivateformat(dk->key, &major, &minor);
++ (void) dst_key_getprivateformat(dk->key, &major, &minor);
+
+ /* Smart signing started with key format 1.3 */
+ dk->legacy = ISC_TF(major == 1 && minor <= 2);
+@@ -1673,9 +1672,6 @@ dns_dnssec_updatekeys(dns_dnsseckeylist_
+
+ /* No match found in keys; add the new key. */
+ if (key2 == NULL) {
+- dns_dnsseckey_t *next;
+-
+- next = ISC_LIST_NEXT(key1, link);
+ ISC_LIST_UNLINK(*newkeys, key1, link);
+ ISC_LIST_APPEND(*keys, key1, link);
+
+diff -up bind-9.7.3/lib/dns/gssapictx.c.cleanup bind-9.7.3/lib/dns/gssapictx.c
+--- bind-9.7.3/lib/dns/gssapictx.c.cleanup 2011-02-18 15:25:53.975761658 +0100
++++ bind-9.7.3/lib/dns/gssapictx.c 2011-02-18 15:26:05.945735228 +0100
+@@ -119,7 +119,6 @@ name_to_gbuffer(dns_name_t *name, isc_bu
+ {
+ dns_name_t tname, *namep;
+ isc_region_t r;
+- isc_result_t result;
+
+ if (!dns_name_isabsolute(name))
+ namep = name;
+@@ -132,7 +131,7 @@ name_to_gbuffer(dns_name_t *name, isc_bu
+ namep = &tname;
+ }
+
+- result = dns_name_toprincipal(namep, buffer);
++ (void) dns_name_toprincipal(namep, buffer);
+ isc_buffer_putuint8(buffer, 0);
+ isc_buffer_usedregion(buffer, &r);
+ REGION_TO_GBUFFER(r, *gbuffer);
+diff -up bind-9.7.3/lib/dns/rdata/generic/dlv_32769.c.cleanup bind-9.7.3/lib/dns/rdata/generic/dlv_32769.c
+--- bind-9.7.3/lib/dns/rdata/generic/dlv_32769.c.cleanup 2011-02-18 15:22:02.456272719 +0100
++++ bind-9.7.3/lib/dns/rdata/generic/dlv_32769.c 2011-02-18 15:22:27.126218257 +0100
+@@ -33,7 +33,6 @@ static inline isc_result_t
+ fromtext_dlv(ARGS_FROMTEXT) {
+ isc_token_t token;
+ unsigned char c;
+- int length;
+
+ REQUIRE(type == 32769);
+
+@@ -71,15 +70,6 @@ fromtext_dlv(ARGS_FROMTEXT) {
+ RETERR(uint8_tobuffer(token.value.as_ulong, target));
+ c = (unsigned char) token.value.as_ulong;
+
+- /*
+- * Digest.
+- */
+- if (c == DNS_DSDIGEST_SHA1)
+- length = ISC_SHA1_DIGESTLENGTH;
+- else if (c == DNS_DSDIGEST_SHA256)
+- length = ISC_SHA256_DIGESTLENGTH;
+- else
+- length = -1;
+ return (isc_hex_tobuffer(lexer, target, -1));
+ }
+
+diff -up bind-9.7.3/lib/dns/request.c.cleanup bind-9.7.3/lib/dns/request.c
+--- bind-9.7.3/lib/dns/request.c.cleanup 2011-02-18 15:22:40.566188593 +0100
++++ bind-9.7.3/lib/dns/request.c 2011-02-18 15:23:25.766088820 +0100
+@@ -428,12 +428,10 @@ req_send(dns_request_t *request, isc_tas
+ isc_region_t r;
+ isc_socket_t *socket;
+ isc_result_t result;
+- unsigned int dispattr;
+
+ req_log(ISC_LOG_DEBUG(3), "req_send: request %p", request);
+
+ REQUIRE(VALID_REQUEST(request));
+- dispattr = dns_dispatch_getattributes(request->dispatch);
+ socket = req_getsocket(request);
+ isc_buffer_usedregion(request->query, &r);
+ /*
+diff -up bind-9.7.3/lib/dns/tkey.c.cleanup bind-9.7.3/lib/dns/tkey.c
+--- bind-9.7.3/lib/dns/tkey.c.cleanup 2011-02-18 15:23:35.386067584 +0100
++++ bind-9.7.3/lib/dns/tkey.c 2011-02-18 15:23:52.796029159 +0100
+@@ -70,10 +70,9 @@ static void
+ _dns_tkey_dumpmessage(dns_message_t *msg) {
+ isc_buffer_t outbuf;
+ unsigned char output[4096];
+- isc_result_t result;
+
+ isc_buffer_init(&outbuf, output, sizeof(output));
+- result = dns_message_totext(msg, &dns_master_style_debug, 0,
++ (void) dns_message_totext(msg, &dns_master_style_debug, 0,
+ &outbuf);
+ /* XXXMLG ignore result */
+ fprintf(stderr, "%.*s\n", (int)isc_buffer_usedlength(&outbuf),
+diff -up bind-9.7.3/lib/dns/validator.c.cleanup bind-9.7.3/lib/dns/validator.c
+--- bind-9.7.3/lib/dns/validator.c.cleanup 2011-02-18 15:24:02.276008230 +0100
++++ bind-9.7.3/lib/dns/validator.c 2011-02-18 15:24:20.245971006 +0100
+@@ -1223,7 +1223,6 @@ authvalidated(isc_task_t *task, isc_even
+ dns_validatorevent_t *devent;
+ dns_validator_t *val;
+ dns_rdataset_t *rdataset;
+- dns_rdataset_t *sigrdataset;
+ isc_boolean_t want_destroy;
+ isc_result_t result;
+ isc_boolean_t exists, data;
+@@ -1233,7 +1232,6 @@ authvalidated(isc_task_t *task, isc_even
+
+ devent = (dns_validatorevent_t *)event;
+ rdataset = devent->rdataset;
+- sigrdataset = devent->sigrdataset;
+ val = devent->ev_arg;
+ result = devent->result;
+ dns_validator_destroy(&val->subvalidator);
+diff -up bind-9.7.3/lib/dns/zone.c.cleanup bind-9.7.3/lib/dns/zone.c
+--- bind-9.7.3/lib/dns/zone.c.cleanup 2011-02-18 15:24:33.825938590 +0100
++++ bind-9.7.3/lib/dns/zone.c 2011-02-18 15:25:38.275796311 +0100
+@@ -5647,11 +5647,11 @@ zone_nsec3chain(dns_zone_t *zone) {
+ dns_nsec3chainlist_t cleanup;
+ dst_key_t *zone_keys[MAXZONEKEYS];
+ isc_int32_t signatures;
+- isc_boolean_t check_ksk, keyset_kskonly, is_ksk;
++ isc_boolean_t check_ksk, keyset_kskonly;
+ isc_boolean_t delegation;
+ isc_boolean_t first;
+ isc_result_t result;
+- isc_stdtime_t now, inception, soaexpire, expire, stop;
++ isc_stdtime_t now, inception, soaexpire, expire;
+ isc_uint32_t jitter;
+ unsigned int i;
+ unsigned int nkeys = 0;
+@@ -5716,7 +5716,6 @@ zone_nsec3chain(dns_zone_t *zone) {
+ */
+ isc_random_get(&jitter);
+ expire = soaexpire - jitter % 3600;
+- stop = now + 5;
+
+ check_ksk = DNS_ZONE_OPTION(zone, DNS_ZONEOPT_UPDATECHECKKSK);
+ keyset_kskonly = DNS_ZONE_OPTION(zone, DNS_ZONEOPT_DNSKEYKSKONLY);
+@@ -5762,7 +5761,6 @@ zone_nsec3chain(dns_zone_t *zone) {
+ if (NSEC3REMOVE(nsec3chain->nsec3param.flags))
+ goto next_addchain;
+
+- is_ksk = ISC_FALSE;
+ delegation = ISC_FALSE;
+ dns_dbiterator_current(nsec3chain->dbiterator, &node, name);
+
+@@ -6481,12 +6479,11 @@ zone_sign(dns_zone_t *zone) {
+ isc_boolean_t build_nsec3 = ISC_FALSE;
+ isc_boolean_t first;
+ isc_result_t result;
+- isc_stdtime_t now, inception, soaexpire, expire, stop;
++ isc_stdtime_t now, inception, soaexpire, expire;
+ isc_uint32_t jitter;
+ unsigned int i, j;
+ unsigned int nkeys = 0;
+ isc_uint32_t nodes;
+- isc_boolean_t was_ksk;
+
+ dns_rdataset_init(&rdataset);
+ dns_fixedname_init(&fixed);
+@@ -6538,7 +6535,6 @@ zone_sign(dns_zone_t *zone) {
+ */
+ isc_random_get(&jitter);
+ expire = soaexpire - jitter % 3600;
+- stop = now + 5;
+
+ /*
+ * We keep pulling nodes off each iterator in turn until
+@@ -6583,8 +6579,6 @@ zone_sign(dns_zone_t *zone) {
+
+ delegation = ISC_FALSE;
+
+- was_ksk = ISC_FALSE;
+-
+ if (first && signing->delete) {
+ /*
+ * Remove the key we are deleting from consideration.
+diff -up bind-9.7.3/lib/isc/httpd.c.cleanup bind-9.7.3/lib/isc/httpd.c
+--- bind-9.7.3/lib/isc/httpd.c.cleanup 2011-02-18 15:17:22.936889562 +0100
++++ bind-9.7.3/lib/isc/httpd.c 2011-02-18 15:17:55.846816943 +0100
+@@ -912,7 +912,6 @@ isc_httpd_senddone(isc_task_t *task, isc
+ {
+ isc_httpd_t *httpd = ev->ev_arg;
+ isc_region_t r;
+- isc_result_t result;
+ isc_socketevent_t *sev = (isc_socketevent_t *)ev;
+
+ ENTER("senddone");
+@@ -963,8 +962,8 @@ isc_httpd_senddone(isc_task_t *task, isc
+
+ r.base = (unsigned char *)httpd->recvbuf;
+ r.length = HTTP_RECVLEN - 1;
+- result = isc_socket_recv(httpd->sock, &r, 1, task, isc_httpd_recvdone,
+- httpd);
++ (void) isc_socket_recv(httpd->sock, &r, 1, task, isc_httpd_recvdone,
++ httpd);
+
+ out:
+ isc_event_free(&ev);
+diff -up bind-9.7.3/lib/isc/string.c.cleanup bind-9.7.3/lib/isc/string.c
+--- bind-9.7.3/lib/isc/string.c.cleanup 2011-02-18 15:18:09.786786183 +0100
++++ bind-9.7.3/lib/isc/string.c 2011-02-18 15:18:31.016739337 +0100
+@@ -167,12 +167,11 @@ isc_string_printf(char *target, size_t s
+ void
+ isc_string_printf_truncate(char *target, size_t size, const char *format, ...) {
+ va_list args;
+- size_t n;
+
+ REQUIRE(size > 0U);
+
+ va_start(args, format);
+- n = vsnprintf(target, size, format, args);
++ (void) vsnprintf(target, size, format, args);
+ va_end(args);
+
+ ENSURE(strlen(target) < size);
+diff -up bind-9.7.3/lib/isc/timer.c.cleanup bind-9.7.3/lib/isc/timer.c
+--- bind-9.7.3/lib/isc/timer.c.cleanup 2011-02-18 15:30:32.385146946 +0100
++++ bind-9.7.3/lib/isc/timer.c 2011-02-18 15:31:22.585036094 +0100
+@@ -333,7 +333,9 @@ schedule(isc__timer_t *timer, isc_time_t
+
+ static inline void
+ deschedule(isc__timer_t *timer) {
++#ifdef USE_TIMER_THREAD
+ isc_boolean_t need_wakeup = ISC_FALSE;
++#endif /* USE_TIMER_THREAD */
+ isc__timermgr_t *manager;
+
+ /*
+@@ -342,8 +344,10 @@ deschedule(isc__timer_t *timer) {
+
+ manager = timer->manager;
+ if (timer->index > 0) {
++#ifdef USE_TIMER_THREAD
+ if (timer->index == 1)
+ need_wakeup = ISC_TRUE;
++#endif /* USE_TIMER_THREAD */
+ isc_heap_delete(manager->heap, timer->index);
+ timer->index = 0;
+ INSIST(manager->nscheduled > 0);
+diff -up bind-9.7.3/lib/isc/unix/socket.c.cleanup bind-9.7.3/lib/isc/unix/socket.c
+--- bind-9.7.3/lib/isc/unix/socket.c.cleanup 2011-02-18 15:15:10.247182323 +0100
++++ bind-9.7.3/lib/isc/unix/socket.c 2011-02-18 15:16:48.806964868 +0100
+@@ -2751,7 +2751,6 @@ isc__socket_close(isc_socket_t *sock0) {
+ isc__socket_t *sock = (isc__socket_t *)sock0;
+ int fd;
+ isc__socketmgr_t *manager;
+- isc_sockettype_t type;
+
+ REQUIRE(VALID_SOCKET(sock));
+
+@@ -2771,7 +2770,6 @@ isc__socket_close(isc_socket_t *sock0) {
+ INSIST(sock->connect_ev == NULL);
+
+ manager = sock->manager;
+- type = sock->type;
+ fd = sock->fd;
+ sock->fd = -1;
+ memset(sock->name, 0, sizeof(sock->name));
+@@ -3689,7 +3687,6 @@ static isc_threadresult_t
+ watcher(void *uap) {
+ isc__socketmgr_t *manager = uap;
+ isc_boolean_t done;
+- int ctlfd;
+ int cc;
+ #ifdef USE_KQUEUE
+ const char *fnname = "kevent()";
+@@ -3701,6 +3698,7 @@ watcher(void *uap) {
+ #elif defined (USE_SELECT)
+ const char *fnname = "select()";
+ int maxfd;
++ int ctlfd;
+ #endif
+ char strbuf[ISC_STRERRORSIZE];
+ #ifdef ISC_SOCKET_USE_POLLWATCH
+@@ -3710,7 +3708,9 @@ watcher(void *uap) {
+ /*
+ * Get the control fd here. This will never change.
+ */
++#ifdef USE_SELECT
+ ctlfd = manager->pipe_fds[0];
++#endif
+ done = ISC_FALSE;
+ while (!done) {
+ do {
diff --git a/bind97-rh665971.patch b/bind97-rh665971.patch
new file mode 100644
index 0000000..6171ec5
--- /dev/null
+++ b/bind97-rh665971.patch
@@ -0,0 +1,24 @@
+diff -up bind-9.7.3/lib/isccc/Makefile.in.rh665971 bind-9.7.3/lib/isccc/Makefile.in
+--- bind-9.7.3/lib/isccc/Makefile.in.rh665971 2011-02-18 15:01:28.718993909 +0100
++++ bind-9.7.3/lib/isccc/Makefile.in 2011-02-18 15:01:41.718965257 +0100
+@@ -71,7 +71,7 @@ libisccc.la: ${OBJS}
+ ${LIBTOOL_MODE_LINK} \
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisccc.la -rpath ${libdir} \
+ -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
+- ${OBJS} ${LIBS} ${ISCLIBS}
++ ${OBJS} ${ISCLIBS} ${LIBS}
+
+ timestamp: libisccc.@A@
+ touch timestamp
+diff -up bind-9.7.3/lib/isccfg/Makefile.in.rh665971 bind-9.7.3/lib/isccfg/Makefile.in
+--- bind-9.7.3/lib/isccfg/Makefile.in.rh665971 2011-02-18 15:01:06.809042198 +0100
++++ bind-9.7.3/lib/isccfg/Makefile.in 2011-02-18 15:01:19.549014121 +0100
+@@ -68,7 +68,7 @@ libisccfg.la: ${OBJS}
+ ${LIBTOOL_MODE_LINK} \
+ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisccfg.la -rpath ${libdir} \
+ -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \
+- ${OBJS} ${LIBS} ${DNSLIBS} ${ISCCCLIBS} ${ISCLIBS}
++ ${OBJS} ${DNSLIBS} ${ISCCCLIBS} ${ISCLIBS} ${LIBS}
+
+ timestamp: libisccfg.@A@
+ touch timestamp
diff --git a/bind97-rh674334.patch b/bind97-rh674334.patch
new file mode 100644
index 0000000..cf7992f
--- /dev/null
+++ b/bind97-rh674334.patch
@@ -0,0 +1,122 @@
+diff -up bind-9.7.3/bin/dig/dig.c.rh674334 bind-9.7.3/bin/dig/dig.c
+--- bind-9.7.3/bin/dig/dig.c.rh674334 2010-05-13 02:42:26.000000000 +0200
++++ bind-9.7.3/bin/dig/dig.c 2011-02-18 13:37:45.830518968 +0100
+@@ -44,8 +44,6 @@
+ #include <dns/result.h>
+ #include <dns/tsig.h>
+
+-#include <bind9/getaddresses.h>
+-
+ #include <dig/dig.h>
+
+ #define ADD_STRING(b, s) { \
+@@ -1429,30 +1427,6 @@ preparse_args(int argc, char **argv) {
+ }
+
+ static void
+-getaddresses(dig_lookup_t *lookup, const char *host) {
+- isc_result_t result;
+- isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES];
+- isc_netaddr_t netaddr;
+- int count, i;
+- dig_server_t *srv;
+- char tmp[ISC_NETADDR_FORMATSIZE];
+-
+- result = bind9_getaddresses(host, 0, sockaddrs,
+- DIG_MAX_ADDRESSES, &count);
+- if (result != ISC_R_SUCCESS)
+- fatal("couldn't get address for '%s': %s",
+- host, isc_result_totext(result));
+-
+- for (i = 0; i < count; i++) {
+- isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]);
+- isc_netaddr_format(&netaddr, tmp, sizeof(tmp));
+- srv = make_server(tmp, host);
+- ISC_LIST_APPEND(lookup->my_server_list, srv, link);
+- }
+- addresscount = count;
+-}
+-
+-static void
+ parse_args(isc_boolean_t is_batchfile, isc_boolean_t config_only,
+ int argc, char **argv) {
+ isc_result_t result;
+@@ -1546,7 +1520,7 @@ parse_args(isc_boolean_t is_batchfile, i
+ if (strncmp(rv[0], "%", 1) == 0)
+ break;
+ if (strncmp(rv[0], "@", 1) == 0) {
+- getaddresses(lookup, &rv[0][1]);
++ addresscount = getaddresses(lookup, &rv[0][1]);
+ } else if (rv[0][0] == '+') {
+ plus_option(&rv[0][1], is_batchfile,
+ lookup);
+diff -up bind-9.7.3/bin/dig/dighost.c.rh674334 bind-9.7.3/bin/dig/dighost.c
+--- bind-9.7.3/bin/dig/dighost.c.rh674334 2011-02-18 13:37:45.820518990 +0100
++++ bind-9.7.3/bin/dig/dighost.c 2011-02-18 13:37:45.830518968 +0100
+@@ -1808,8 +1808,7 @@ followup_lookup(dns_message_t *msg, dig_
+ dns_rdata_freestruct(&ns);
+
+ /* Initialize lookup if we've not yet */
+- debug("found NS %d %s", numLookups, namestr);
+- numLookups++;
++ debug("found NS %s", namestr);
+ if (!success) {
+ success = ISC_TRUE;
+ lookup_counter++;
+@@ -1831,9 +1830,8 @@ followup_lookup(dns_message_t *msg, dig_
+ domain = dns_fixedname_name(&lookup->fdomain);
+ dns_name_copy(name, domain, NULL);
+ }
+- srv = make_server(namestr, namestr);
+- debug("adding server %s", srv->servername);
+- ISC_LIST_APPEND(lookup->my_server_list, srv, link);
++ debug("adding server %s", namestr);
++ numLookups += getaddresses(lookup, namestr);
+ dns_rdata_reset(&rdata);
+ }
+ }
+@@ -3608,6 +3606,31 @@ get_address(char *host, in_port_t port,
+ return (ISC_R_SUCCESS);
+ }
+
++int
++getaddresses(dig_lookup_t *lookup, const char *host) {
++ isc_result_t result;
++ isc_sockaddr_t sockaddrs[DIG_MAX_ADDRESSES];
++ isc_netaddr_t netaddr;
++ int count, i;
++ dig_server_t *srv;
++ char tmp[ISC_NETADDR_FORMATSIZE];
++
++ result = bind9_getaddresses(host, 0, sockaddrs,
++ DIG_MAX_ADDRESSES, &count);
++ if (result != ISC_R_SUCCESS)
++ fatal("couldn't get address for '%s': %s",
++ host, isc_result_totext(result));
++
++ for (i = 0; i < count; i++) {
++ isc_netaddr_fromsockaddr(&netaddr, &sockaddrs[i]);
++ isc_netaddr_format(&netaddr, tmp, sizeof(tmp));
++ srv = make_server(tmp, host);
++ ISC_LIST_APPEND(lookup->my_server_list, srv, link);
++ }
++
++ return count;
++}
++
+ /*%
+ * Initiate either a TCP or UDP lookup
+ */
+diff -up bind-9.7.3/bin/dig/include/dig/dig.h.rh674334 bind-9.7.3/bin/dig/include/dig/dig.h
+--- bind-9.7.3/bin/dig/include/dig/dig.h.rh674334 2011-02-18 13:37:45.820518990 +0100
++++ bind-9.7.3/bin/dig/include/dig/dig.h 2011-02-18 13:37:45.830518968 +0100
+@@ -289,6 +289,9 @@ extern int idnoptions;
+ isc_result_t
+ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr);
+
++int
++getaddresses(dig_lookup_t *lookup, const char *host);
++
+ isc_result_t
+ get_reverse(char *reverse, size_t len, char *value, isc_boolean_t ip6_int,
+ isc_boolean_t strict);
diff --git a/sources b/sources
index 6fd59e6..97a1c28 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
76857526420dc8e153ad688aeb5a2c4b config-8.tar.bz2
-c377ab1425e563ff4d930293fa5d5d5e bind-9.7.3rc1.tar.gz
+207477c4cf95f2db5be0ded8a22669e0 bind-9.7.3.tar.gz