BUG/MINOR: mux-h1: Don't emit extra CRLF for empty chunked messages
authorChristopher Faulet <cfaulet@haproxy.com>
Mon, 8 Feb 2021 08:34:35 +0000 (09:34 +0100)
committerChristopher Faulet <cfaulet@haproxy.com>
Mon, 8 Feb 2021 08:43:36 +0000 (09:43 +0100)
Because of a buggy tests when processing the EOH HTX block, an extra CRLF is
added for empty chunked messages. This bug was introduced by the commit
d1ac2b90c ("MAJOR: htx: Remove the EOM block type and use HTX_FL_EOM
instead").

This fix is specific for 2.4. No backport needed.

src/mux_h1.c

index 3837f7a..a480d42 100644 (file)
@@ -2082,8 +2082,10 @@ static size_t h1_process_output(struct h1c *h1c, struct buffer *buf, size_t coun
                                else {
                                        /* EOM flag is set and it is the last block */
                                        if (htx_is_unique_blk(chn_htx, blk) && (chn_htx->flags & HTX_FL_EOM)) {
-                                               if ((h1m->flags & H1_MF_CHNK) && !chunk_memcat(&tmp, "\r\n0\r\n\r\n", 7))
-                                                       goto full;
+                                               if (h1m->flags & H1_MF_CHNK) {
+                                                       if (!chunk_memcat(&tmp, "\r\n0\r\n\r\n", 7))
+                                                               goto full;
+                                               }
                                                else if (!chunk_memcat(&tmp, "\r\n", 2))
                                                        goto full;
                                                goto done;