diff options
Diffstat (limited to 'net-proxy/haproxy/files/haproxy-2.7.2-hpack.patch')
-rw-r--r-- | net-proxy/haproxy/files/haproxy-2.7.2-hpack.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/net-proxy/haproxy/files/haproxy-2.7.2-hpack.patch b/net-proxy/haproxy/files/haproxy-2.7.2-hpack.patch new file mode 100644 index 000000000000..f744eccfaba9 --- /dev/null +++ b/net-proxy/haproxy/files/haproxy-2.7.2-hpack.patch @@ -0,0 +1,49 @@ +From 494ae0c35c883632faf1d22b54083d3e97a7c129 Mon Sep 17 00:00:00 2001 +From: Aurelien DARRAGON <adarragon@haproxy.com> +Date: Wed, 25 Jan 2023 16:35:00 +0100 +Subject: [PATCH] DEV: hpack: fix `trash` build regression + +Since 7d84439 ("BUILD: hpack: include global.h for the trash that is needed +in debug mode"), hpack decode tool fails to compile on targets that enable +USE_THREAD. (ie: linux-glibc target as reported by Christian Ruppert) + +When building hpack devtool, we are including src/hpack-dec.c as a dependency. +src/hpack-dec.c relies on the global trash whe debug mode is enabled. +But as we're building hpack tool with a limited scope of haproxy +sources, global trash (which is declared in src/chunk.c) is not available. +Thus, src/hpack-dec.c relies on a local 'trash' variable declared within +dev/hpack/decode.c + +This used to work fine until 7d84439. +But now that global.h is explicitely included in src/hpack-dec.c, +trash variable definition from decode.c conflicts with the one from global.h: + + In file included from include/../src/hpack-dec.c:35, + from dev/hpack/decode.c:87: + include/haproxy/global.h:52:35: error: thread-local declaration of 'trash' follows non-thread-local declaration + 52 | extern THREAD_LOCAL struct buffer trash; + +Adding THREAD_LOCAL attribute to 'decode.c' local trash variable definition +makes the compiler happy again. + +This should fix GH issue #2009 +--- + dev/hpack/decode.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dev/hpack/decode.c b/dev/hpack/decode.c +index ae825120f..13c95c77a 100644 +--- a/dev/hpack/decode.c ++++ b/dev/hpack/decode.c +@@ -30,7 +30,7 @@ uint8_t buf[MAX_RQ_SIZE]; + char trash_buf[MAX_RQ_SIZE]; + char tmp_buf[MAX_RQ_SIZE]; + +-struct buffer trash = { .area = trash_buf, .data = 0, .size = sizeof(trash_buf) }; ++THREAD_LOCAL struct buffer trash = { .area = trash_buf, .data = 0, .size = sizeof(trash_buf) }; + struct buffer tmp = { .area = tmp_buf, .data = 0, .size = sizeof(tmp_buf) }; + + /* displays a <len> long memory block at <buf>, assuming first byte of <buf> +-- +2.34.1 + |