]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: resolvers: get rid of single-iteration loop in resolv_get_ip_from_response()
authorWilly Tarreau <w@1wt.eu>
Fri, 22 Oct 2021 06:34:14 +0000 (08:34 +0200)
committerWilly Tarreau <w@1wt.eu>
Fri, 22 Oct 2021 06:34:14 +0000 (08:34 +0200)
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

index 34005625a084d3d7999623ee54ba56575b62bbf6..a8d374e10a1f198ac752f67fe407959cd82be890 100644 (file)
@@ -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);