diff options
Diffstat (limited to 'contrib/unbound/validator/validator.c')
| -rw-r--r-- | contrib/unbound/validator/validator.c | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/contrib/unbound/validator/validator.c b/contrib/unbound/validator/validator.c index a0550b484eae..5817fc8085a2 100644 --- a/contrib/unbound/validator/validator.c +++ b/contrib/unbound/validator/validator.c @@ -76,7 +76,7 @@ static void process_ds_response(struct module_qstate* qstate,  	struct module_qstate* sub_qstate); -/* Updates the suplied EDE (RFC8914) code selectively so we don't lose +/* Updates the supplied EDE (RFC8914) code selectively so we don't lose   * a more specific code */  static void  update_reason_bogus(struct reply_info* rep, sldns_ede_code reason_bogus) @@ -399,7 +399,7 @@ needs_validation(struct module_qstate* qstate, int ret_rc,  	 * For DNS64 bit_cd signals no dns64 processing, but we want to  	 * provide validation there too */  	/* -	if(qstate->query_flags & BIT_CD) { +	if((qstate->query_flags & BIT_CD)) {  		verbose(VERB_ALGO, "not validating response due to CD bit");  		return 0;  	} @@ -2593,8 +2593,17 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq,  	/* Update rep->reason_bogus as it is the one being cached */  	update_reason_bogus(vq->orig_msg->rep, errinf_to_reason_bogus(qstate)); +	if(vq->orig_msg->rep->security != sec_status_bogus && +		vq->orig_msg->rep->security != sec_status_secure_sentinel_fail +		&& vq->orig_msg->rep->reason_bogus == LDNS_EDE_DNSSEC_BOGUS) { +		/* Not interested in any DNSSEC EDE here, validator by default +		 * uses LDNS_EDE_DNSSEC_BOGUS; +		 * TODO revisit default value for the module */ +		vq->orig_msg->rep->reason_bogus = LDNS_EDE_NONE; +	} +  	/* store results in cache */ -	if(qstate->query_flags&BIT_RD) { +	if((qstate->query_flags&BIT_RD)) {  		/* if secure, this will override cache anyway, no need  		 * to check if from parentNS */  		if(!qstate->no_cache_store) { @@ -2908,7 +2917,7 @@ ds_response_to_ke(struct module_qstate* qstate, struct val_qstate* vq,  		struct ub_packed_rrset_key* ds;  		enum sec_status sec;  		ds = reply_find_answer_rrset(qinfo, msg->rep); -		/* If there was no DS rrset, then we have mis-classified  +		/* If there was no DS rrset, then we have misclassified  		 * this message. */  		if(!ds) {  			log_warn("internal error: POSITIVE DS response was " @@ -3460,7 +3469,7 @@ val_inform_super(struct module_qstate* qstate, int id,  		if(suspend) {  			/* deep copy the return_msg to vq->sub_ds_msg; it will  			 * be resumed later in the super state with the caveat -			 * that the initial calculations will be re-caclulated +			 * that the initial calculations will be re-calculated  			 * and re-suspended there before continuing. */  			vq->sub_ds_msg = dns_msg_deepcopy_region(  				qstate->return_msg, super->region); | 
