From: Willy Tarreau Date: Fri, 22 Oct 2021 06:34:14 +0000 (+0200) Subject: CLEANUP: resolvers: get rid of single-iteration loop in resolv_get_ip_from_response() X-Git-Tag: v2.5-dev11~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbb0bb59e3c14c1b231b6931b9609d7ae94e0a4f;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/resolvers.c b/src/resolvers.c index 34005625a0..a8d374e10a 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);