]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/resolve: impose limits on NS election iterations
authorMarek Vavruša <marek.vavrusa@nic.cz>
Wed, 3 Jun 2015 00:39:13 +0000 (02:39 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Wed, 3 Jun 2015 00:39:13 +0000 (02:39 +0200)
lib/resolve.c

index cd9d72d6b730204582265a01f3c9d4665338f48c..3810a9d9f01a71f908f4bdb1f8603cf2a9aa80a4 100644 (file)
@@ -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");