From dbb0bb59e3c14c1b231b6931b9609d7ae94e0a4f Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 22 Oct 2021 08:34:14 +0200 Subject: [PATCH] CLEANUP: resolvers: get rid of single-iteration loop in resolv_get_ip_from_response() In issue 1424 Coverity reports that the loop increment is unreachable, which is true, the list_for_each_entry() was replaced with a for loop, but it was already not needed and was instead used as a convenient construct for a single iteration lookup. Let's get rid of all this now and replace the loop with an "if" statement. --- src/resolvers.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/resolvers.c b/src/resolvers.c index 34005625a..a8d374e10 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -1665,14 +1665,13 @@ int resolv_get_ip_from_response(struct resolv_response *r_res, LIST_APPEND(&found_record->attached_servers, &owner->ip_rec_item); } - for (eb32 = eb32_first(&r_res->answer_tree); eb32 != NULL; eb32 = eb32_next(eb32)) { - record = eb32_entry(eb32, typeof(*record), link); + eb32 = eb32_first(&r_res->answer_tree); + if (eb32) { /* Move the first record to the end of the list, for internal * round robin. */ - eb32_delete(&record->link); - eb32_insert(&r_res->answer_tree, &record->link); - break; + eb32_delete(eb32); + eb32_insert(&r_res->answer_tree, eb32); } return (currentip_found ? RSLV_UPD_NO : RSLV_UPD_SRVIP_NOT_FOUND);