]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mux-h1: Use HTX extra field only for responses with known length
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 25 Sep 2023 13:59:07 +0000 (15:59 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Tue, 17 Oct 2023 16:51:13 +0000 (18:51 +0200)
For now, it is not an issue, but it is safer to explicitly ignore HTX extra
field for responses with unknown length. This will be mandatory to future
fixes, to be able to re-chunk responses with an unknown length..

src/mux_h1.c

index e34b45620dc278af560d9dd5e96c5c0872bc9ea9..a2261d356d152c68e714efee09b2101fe968ea04 100644 (file)
@@ -2589,7 +2589,7 @@ static size_t h1_make_data(struct h1s *h1s, struct h1m *h1m, struct buffer *buf,
 
                        /* If is a new chunk, prepend the chunk size */
                        if (!h1m->curr_len) {
-                               h1m->curr_len = count + htx->extra;
+                               h1m->curr_len = count + (htx->extra != HTX_UNKOWN_PAYLOAD_LENGTH ? htx->extra : 0);
                                h1_prepend_chunk_size(&h1c->obuf, h1m->curr_len);
                        }
                        h1m->curr_len -= count;
@@ -2662,7 +2662,7 @@ static size_t h1_make_data(struct h1s *h1s, struct h1m *h1m, struct buffer *buf,
                        if (h1m->flags & H1_MF_CHNK) {
                                /* If is a new chunk, prepend the chunk size */
                                if (!h1m->curr_len) {
-                                       h1m->curr_len = (htx->extra ? htx->data + htx->extra : vlen);
+                                       h1m->curr_len = (htx->extra && htx->extra != HTX_UNKOWN_PAYLOAD_LENGTH ? htx->data + htx->extra : vlen);
                                        if (!h1_append_chunk_size(&outbuf, h1m->curr_len)) {
                                                h1m->curr_len = 0;
                                                goto full;