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

daemon/worker: enforce iteration limit for cached answers

parent 43710083
Branches
Tags
No related merge requests found
......@@ -187,13 +187,14 @@ static int qr_task_step(struct qr_task *task, knot_pkt_t *packet)
int state = kr_resolve_consume(&task->req, packet);
while (state == KNOT_STATE_PRODUCE) {
state = kr_resolve_produce(&task->req, &addr, &sock_type, next_query);
if (++task->iter_count > KR_ITER_LIMIT) {
return qr_task_finalize(task, KNOT_STATE_FAIL);
}
}
/* We're done, no more iterations needed */
if (state & (KNOT_STATE_DONE|KNOT_STATE_FAIL)) {
return qr_task_finalize(task, state);
} else if (++task->iter_count > KR_ITER_LIMIT) {
return qr_task_finalize(task, KNOT_STATE_FAIL);
}
/* Create connection for iterative query */
......
......@@ -305,7 +305,7 @@ static int process_answer(knot_pkt_t *pkt, struct kr_request *req)
}
/* Follow canonical name as next SNAME. */
if (cname != query->sname) {
if (!knot_dname_is_equal(cname, query->sname)) {
DEBUG_MSG("<= cname chain, following\n");
struct kr_query *next = kr_rplan_push(&req->rplan, query->parent, cname, query->sclass, query->stype);
kr_zonecut_set_sbelt(&next->zone_cut);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment