From 181cd8ba8a5354493ba7d84f1642ad8fe339cbec Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 10 Mar 2026 16:27:03 +0100 Subject: [PATCH] MEDIUM: stream: Try to use small buffer when TCP stream is queued It was performed when an HTX stream was queued. Small requests were moved in small buffers. Here we do the same but for TCP streams. --- src/stream.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/stream.c b/src/stream.c index 28989bd2f..8886763bf 100644 --- a/src/stream.c +++ b/src/stream.c @@ -2512,11 +2512,22 @@ struct task *process_stream(struct task *t, void *context, unsigned int state) if (scb->state == SC_ST_ASS && srv && srv->rdr_len && (s->flags & SF_REDIRECTABLE)) http_perform_server_redirect(s, scb); - if (unlikely(scb->state == SC_ST_QUE && IS_HTX_STRM(s))) { + if (unlikely(scb->state == SC_ST_QUE)) { struct buffer sbuf = BUF_NULL; - if (!htx_move_to_small_buffer(&sbuf, &req->buf)) - break; + if (IS_HTX_STRM(s)) { + if (!htx_move_to_small_buffer(&sbuf, &req->buf)) + break; + } + else { + if (b_size(&req->buf) == global.tune.bufsize_small || + b_data(&req->buf) > global.tune.bufsize_small) + break; + if (!b_alloc_small(&sbuf)) + break; + b_xfer(&sbuf, &req->buf, b_data(&req->buf)); + } + b_free(&req->buf); offer_buffers(s, 1); req->buf = sbuf;