]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: shctx: do not look for available blocks when the first one is enough
authorWilly Tarreau <w@1wt.eu>
Fri, 19 Nov 2021 16:42:49 +0000 (17:42 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 19 Nov 2021 18:25:13 +0000 (19:25 +0100)
In shctx_row_reserve_hot() we only leave if we've found the exact
requested size instead of at least as large, as is documented. This
results in extra lookups and free calls in the avail loop while it is
not needed, and participates to seeing a negative data_len early as
spotted in previous bugs.

It doesn't seem to have any other impact however, but it's better to
backport it to stable branches.

src/shctx.c

index 7567645a18aadff86d61a92f21b474b80eb5daa0..f675d8142028c6f91eaa37f4cc261b41953b7180 100644 (file)
@@ -61,7 +61,7 @@ struct shared_block *shctx_row_reserve_hot(struct shared_context *shctx,
                                return last ? last : first;
                        } else {
                                data_len -= remain;
-                               if (!data_len)
+                               if (data_len <= 0)
                                        return last ? last : first;
                        }
                }