diff --git a/CHANGES b/CHANGES index 2bfc16b498..863c5b61f5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ + 732. [bug] Glue with 0 TTL could also cause SERVFAIL. [RT #828] + 731. [bug] Certain zone errors could cause named-checkzone to fail ungracefully. [RT #819] diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 16043badf6..edf5e2e6aa 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.197 2001/02/02 00:10:26 halley Exp $ */ +/* $Id: resolver.c,v 1.198 2001/02/08 19:14:58 halley Exp $ */ #include @@ -3156,9 +3156,15 @@ mark_related(dns_name_t *name, dns_rdataset_t *rdataset, isc_boolean_t external, isc_boolean_t gluing) { name->attributes |= DNS_NAMEATTR_CACHE; - if (gluing) + if (gluing) { rdataset->trust = dns_trust_glue; - else + /* + * Glue with 0 TTL causes problems. We force the TTL to + * 1 second to prevent this. + */ + if (rdataset->ttl == 0) + rdataset->ttl = 1; + } else rdataset->trust = dns_trust_additional; rdataset->attributes |= DNS_RDATASETATTR_CACHE; if (external)