]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: stream: Offer buffers of default size only
authorChristopher Faulet <cfaulet@haproxy.com>
Tue, 3 Feb 2026 06:57:17 +0000 (07:57 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Wed, 18 Feb 2026 12:26:21 +0000 (13:26 +0100)
Check the channels buffers size on release before trying to offer it to
waiting entities. Only normal buffers must be considered. This will be
mandatory when the large buffers support on channels will be added.

src/stream.c

index 873207a4a9dc5351d12406f35df53e2996b0459a..2d6b23da26cd2b290c1fd777453943d1dd05a8c0 100644 (file)
@@ -658,7 +658,7 @@ void stream_free(struct stream *s)
        b_dequeue(&s->buffer_wait);
 
        if (s->req.buf.size || s->res.buf.size) {
-               int count = !!s->req.buf.size + !!s->res.buf.size;
+               int count = (s->req.buf.size == global.tune.bufsize) + (s->res.buf.size == global.tune.bufsize);
 
                b_free(&s->req.buf);
                b_free(&s->res.buf);
@@ -807,11 +807,13 @@ void stream_release_buffers(struct stream *s)
        int offer = 0;
 
        if (c_size(&s->req) && c_empty(&s->req)) {
-               offer++;
+               if (c_size(&s->req) == global.tune.bufsize)
+                       offer++;
                b_free(&s->req.buf);
        }
        if (c_size(&s->res) && c_empty(&s->res)) {
-               offer++;
+               if (c_size(&s->res) == global.tune.bufsize)
+                       offer++;
                b_free(&s->res.buf);
        }