Skip to content
Snippets Groups Projects
Commit 0e033780 authored by Marek Vavruša's avatar Marek Vavruša
Browse files

lib/resolve: top-down search if NS is at current zone cut (not backtrace)

parent d70186a0
No related branches found
No related tags found
No related merge requests found
......@@ -53,17 +53,17 @@ static int ns_fetch_cut(struct kr_query *qry, struct kr_request *req)
{
struct kr_cache_txn txn;
int ret = 0;
/* If at/subdomain of parent zone cut, start top-down search */
struct kr_query *parent = qry->parent;
if (parent && knot_dname_in(parent->zone_cut.name, qry->sname)) {
return kr_zonecut_set_sbelt(req->ctx, &qry->zone_cut);
}
/* Find closest zone cut from cache */
if (kr_cache_txn_begin(&req->ctx->cache, &txn, NAMEDB_RDONLY) != 0) {
ret = kr_zonecut_set_sbelt(req->ctx, &qry->zone_cut);
} else {
/* If at/subdomain of parent zone cut, start from 'one up' to avoid loops */
struct kr_query *parent = qry->parent;
const knot_dname_t *start_from = qry->sname;
if (parent && knot_dname_in(parent->zone_cut.name, qry->sname)) {
start_from = parent->zone_cut.name;
}
/* Find closest zone cut from cache */
ret = kr_zonecut_find_cached(req->ctx, &qry->zone_cut, start_from, &txn, qry->timestamp.tv_sec);
ret = kr_zonecut_find_cached(req->ctx, &qry->zone_cut, qry->sname, &txn, qry->timestamp.tv_sec);
kr_cache_txn_abort(&txn);
}
return ret;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment