From: Lukáš Ondráček Date: Wed, 2 Jul 2025 16:00:33 +0000 (+0200) Subject: lib/cache: fix retaining is_cache flag in cdb_clear X-Git-Tag: v6.0.15~10^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fenvironments%2Fdocs-cache-reopen-zgvyna%2Fdeployments%2F7116;p=thirdparty%2Fknot-resolver.git lib/cache: fix retaining is_cache flag in cdb_clear --- diff --git a/lib/cache/cdb_lmdb.c b/lib/cache/cdb_lmdb.c index 106115133..cb19b9280 100644 --- a/lib/cache/cdb_lmdb.c +++ b/lib/cache/cdb_lmdb.c @@ -322,7 +322,7 @@ static void cdb_close_env(struct lmdb_env *env, struct kr_cdb_stats *stats) memset(env, 0, sizeof(*env)); } -/** We assume that *env is zeroed and we return it zeroed on errors. */ +/** We assume that *env is zeroed (except for env->is_cache) and we return it zeroed on errors. */ static int cdb_open_env(struct lmdb_env *env, const char *path, const size_t mapsize, struct kr_cdb_stats *stats) { @@ -493,7 +493,10 @@ static int reopen_env(struct lmdb_env *env, struct kr_cdb_stats *stats, const si return lmdb_error(env, ret); } auto_free char *path_copy = strdup(path); + bool is_cache_copy = env->is_cache; + cdb_close_env(env, stats); + env->is_cache = is_cache_copy; return cdb_open_env(env, path_copy, mapsize, stats); }