From: Marek Vavrusa Date: Fri, 27 May 2016 05:00:40 +0000 (-0700) Subject: lib/resolve: added synchronous cache option X-Git-Tag: v1.0.0~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=742238d4cb2eb1c4d0c300d30d09eafb9e7449d3;p=thirdparty%2Fknot-resolver.git lib/resolve: added synchronous cache option --- diff --git a/lib/resolve.c b/lib/resolve.c index 9d8c7e92c..00243a597 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -57,9 +57,9 @@ static int produce_yield(knot_layer_t *ctx, knot_pkt_t *pkt) { return kr_ok(); } /** Enforce cache flushing in debug mode. */ static void flush_caches(struct kr_request *req) { -#ifdef DEBUG - kr_cache_sync(&req->ctx->cache); -#endif + if (req->options & QUERY_CACHE_SYNC) { + kr_cache_sync(&req->ctx->cache); + } } /** @internal Macro for iterating module layers. */ #define RESUME_LAYERS(from, req, qry, func, ...) \ @@ -69,7 +69,6 @@ static void flush_caches(struct kr_request *req) { if (mod->layer) { \ struct knot_layer layer = {.state = (req)->state, .api = mod->layer(mod), .data = (req)}; \ if (layer.api && layer.api->func) { \ - flush_caches(req); \ (req)->state = layer.api->func(&layer, ##__VA_ARGS__); \ if ((req)->state == KNOT_STATE_YIELD) { \ func ## _yield(&layer, ##__VA_ARGS__); \ @@ -77,7 +76,8 @@ static void flush_caches(struct kr_request *req) { } \ } \ } \ - } /* Invalidate current query. */ \ + } /* Invalidate current query and maybe flush caches. */ \ + flush_caches(req); \ (req)->current_query = NULL /** @internal Macro for starting module iteration. */ diff --git a/lib/rplan.h b/lib/rplan.h index d0e8e2f3f..bf8aea328 100644 --- a/lib/rplan.h +++ b/lib/rplan.h @@ -47,6 +47,7 @@ X(DNSSEC_WEXPAND, 1 << 19) /**< Query response has wildcard expansion. */ \ X(PERMISSIVE, 1 << 20) /**< Permissive resolver mode. */ \ X(STRICT, 1 << 21) /**< Strict resolver mode. */ \ + X(CACHE_SYNC, 1 << 22) /**< Sync cache as often as possible. */ /** Query flags */ enum kr_query_flag { diff --git a/tests/deckard b/tests/deckard index 85cbf8224..1bdecfcde 160000 --- a/tests/deckard +++ b/tests/deckard @@ -1 +1 @@ -Subproject commit 85cbf82244059113ff3149da04f99089dddc1c5b +Subproject commit 1bdecfcde89a39d47dfcc03a0712a04bb668583f