return;
}
- if(qstate->blacklist || qstate->no_cache_lookup) {
- /* cache is blacklisted or we are instructed from edns to not look */
+ if(qstate->blacklist || qstate->no_cache_lookup
+ || iter_stub_fwd_no_cache(qstate, &qstate->qinfo, NULL, NULL,
+ NULL, 0)) {
+ /* cache is blacklisted or we are instructed from edns to not
+ * look or a forwarder/stub forbids it */
/* pass request to next module */
qstate->ext_state[id] = module_wait_module;
return;
{
qstate->is_cachedb_answer = 0;
/* check if we are not enabled or instructed to not cache, and skip */
- if(!ie->enabled || qstate->no_cache_store) {
+ if(!ie->enabled || qstate->no_cache_store
+ || iter_stub_fwd_no_cache(qstate, &qstate->qinfo, NULL, NULL,
+ NULL, 0)) {
/* we are done with the query */
qstate->ext_state[id] = module_finished;
return;
- Fix to have cachedb not return expired bogus data as non-bogus.
- Fix to make the cachedb_val_expired.crpl succeed.
+23 February 2026: Yorgos
+ - Fix to disallow cache lookup/store in external cachedb when a
+ forwarder/stub forbids it with the no-cache option.
+
17 February 2026: Wouter
- Fix to remove unused conditional from cookie timestamp at
worker env.
struct delegpt *dp;
int nolock = 1;
+ log_assert((retdpname && retdpnamelen
+ && dpname_storage && dpname_storage_len > 0) ||
+ (retdpname == NULL && retdpnamelen == NULL
+ && dpname_storage == NULL && dpname_storage_len == 0));
+
/* Check for stub. */
/* Lock both forwards and hints for atomic read. */
lock_rw_rdlock(&qstate->env->fwds->lock);