mirror of
https://github.com/NLnetLabs/unbound.git
synced 2026-01-29 01:47:32 -05:00
Use passed in neg and key cache if non-NULL.
With this the neg and key caches can be shared between multiple libunbound contexts. The msg and rrset caches already allowed this since context_finalize() did not touch those if they are already available and have the correct size. Care must be taken to properly unhook the caches from the validator environment before calling ub_ctx_delete() otherwise one risks double free or use after free bugs.
This commit is contained in:
parent
1d45b4a1e0
commit
da6ac0c4ff
1 changed files with 4 additions and 0 deletions
|
|
@ -121,6 +121,8 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env,
|
|||
log_err("out of memory");
|
||||
return 0;
|
||||
}
|
||||
if (env->key_cache)
|
||||
val_env->kcache = env->key_cache;
|
||||
if(!val_env->kcache)
|
||||
val_env->kcache = key_cache_create(cfg);
|
||||
if(!val_env->kcache) {
|
||||
|
|
@ -146,6 +148,8 @@ val_apply_cfg(struct module_env* env, struct val_env* val_env,
|
|||
log_err("validator: cannot apply nsec3 key iterations");
|
||||
return 0;
|
||||
}
|
||||
if (env->neg_cache)
|
||||
val_env->neg_cache = env->neg_cache;
|
||||
if(!val_env->neg_cache)
|
||||
val_env->neg_cache = val_neg_create(cfg,
|
||||
val_env->nsec3_maxiter[val_env->nsec3_keyiter_count-1]);
|
||||
|
|
|
|||
Loading…
Reference in a new issue