From: Marek VavruĊĦa Date: Wed, 3 Jun 2015 00:39:13 +0000 (+0200) Subject: lib/resolve: impose limits on NS election iterations X-Git-Tag: v1.0.0-beta1~124^2~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2ce9f414fea103c2305bb39b806f323d4312caa8;p=thirdparty%2Fknot-resolver.git lib/resolve: impose limits on NS election iterations --- diff --git a/lib/resolve.c b/lib/resolve.c index cd9d72d6b..3810a9d9f 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -381,6 +381,7 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t { struct kr_rplan *rplan = &request->rplan; struct kr_query *qry = kr_rplan_current(rplan); + unsigned ns_election_iter = 0; /* No query left for resolution */ if (kr_rplan_empty(rplan)) { @@ -429,6 +430,7 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t ns_election: /* Elect best nameserver candidate */ + assert(++ns_election_iter < KR_ITER_LIMIT); kr_nsrep_elect(&qry->ns, &qry->zone_cut.nsset, request->ctx->nsrep); if (qry->ns.score > KR_NS_MAX_SCORE) { DEBUG_MSG("=> no valid NS left\n");