From 7e877b83492a2c7eb8c427fc3ea5cc94b9300a6b Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Wed, 20 May 2026 09:48:48 +0200 Subject: [PATCH] TO CHECK: make hq-interop support hlstream (streams for haload) --- src/hq_interop.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/hq_interop.c b/src/hq_interop.c index c1fc5c23d..149da257f 100644 --- a/src/hq_interop.c +++ b/src/hq_interop.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -94,13 +95,22 @@ static ssize_t hq_interop_rcv_buf_req(struct qcs *qcs, struct buffer *b, int fin return b_data(b); } +static inline int hq_interop_strm_bytes_in(const struct stconn *sc) +{ + if (obj_type(sc->app) == OBJ_TYPE_STREAM) + return __sc_strm(sc)->scb->bytes_in; + else if (obj_type(sc->app) == OBJ_TYPE_HALOAD) + return __sc_hldstream(sc)->sc->bytes_in; + else + ABORT_NOW(); +} + /* HTTP/0.9 response -> HTX. */ static ssize_t hq_interop_rcv_buf_res(struct qcs *qcs, struct buffer *b, int fin) { struct htx *htx; struct htx_sl *sl; struct buffer *htx_buf; - const struct stream *strm = __sc_strm(qcs->sd->sc); const unsigned int flags = HTX_SL_F_VER_11|HTX_SL_F_XFER_LEN; size_t to_copy = b_data(b); size_t htx_sent = 0; @@ -110,7 +120,7 @@ static ssize_t hq_interop_rcv_buf_res(struct qcs *qcs, struct buffer *b, int fin BUG_ON(!htx_buf); htx = htx_from_buf(htx_buf); - if (htx_is_empty(htx) && !strm->scb->bytes_in) { + if (htx_is_empty(htx) && hq_interop_strm_bytes_in(qcs->sd->sc)) { /* First data transfer, add HTX response start-line first. */ sl = htx_add_stline(htx, HTX_BLK_RES_SL, flags, ist("HTTP/1.0"), ist("200"), ist(""));