]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/cache: fix retaining is_cache flag in cdb_clear docs-cache-reopen-zgvyna/deployments/7116
authorLukáš Ondráček <lukas.ondracek@nic.cz>
Wed, 2 Jul 2025 16:00:33 +0000 (18:00 +0200)
committerLukáš Ondráček <lukas.ondracek@nic.cz>
Wed, 2 Jul 2025 16:00:33 +0000 (18:00 +0200)
lib/cache/cdb_lmdb.c

index 10611513396a8dcf1010079a6df4e0858c1c8669..cb19b928083d454cb56eb621476191e7964c8f0b 100644 (file)
@@ -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);
 }