From: Wouter Wijngaards Date: Tue, 16 Mar 2010 16:52:56 +0000 (+0000) Subject: Faster nsec3. X-Git-Tag: release-1.4.4rc1~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=367c2abbf3f5458e5e824c102f485ea3fa4d51fd;p=thirdparty%2Funbound.git Faster nsec3. git-svn-id: file:///svn/unbound/trunk@2044 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 99e31d8f3..64033a698 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix interface-automatic for OpenBSD: msg.controllen was too small, also assertions on ancillary data buffer. - check for IP_SENDSRCADDR for interface-automatic or IP_PKTINFO. + - for NSEC3 check if signatures are cached. 15 March 2010: Wouter - unit test for util/regional.c. diff --git a/validator/val_nsec3.c b/validator/val_nsec3.c index c48e91351..004c8f7a2 100644 --- a/validator/val_nsec3.c +++ b/validator/val_nsec3.c @@ -48,6 +48,7 @@ #include "validator/val_nsec3.h" #include "validator/validator.h" #include "validator/val_kentry.h" +#include "services/cache/rrset.h" #include "util/regional.h" #include "util/rbtree.h" #include "util/module.h" @@ -1254,8 +1255,15 @@ list_is_secure(struct module_env* env, struct val_env* ve, size_t i; enum sec_status sec; for(i=0; ientry.data; if(list[i]->rk.type != htons(LDNS_RR_TYPE_NSEC3)) continue; + if(d->security == sec_status_secure) + continue; + rrset_check_sec_status(env->rrset_cache, list[i], *env->now); + if(d->security == sec_status_secure) + continue; sec = val_verify_rrset_entry(env, ve, list[i], kkey, reason); if(sec != sec_status_secure) { verbose(VERB_ALGO, "NSEC3 did not verify");