From d35cee972b6e2183f44c79462b1c2fcf22ed7987 Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Tue, 20 Jun 2023 14:55:11 +0200 Subject: [PATCH] BUG/MINOR: http_ext: fix if-none regression in forwardfor option A regression was introduced in 730b983 ("MINOR: proxy: move 'forwardfor' option to http_ext") Indeed, when the forwardfor if-none option is specified on the frontend but forwardfor is not specified at all on the backend: if-none from the frontend is ignored. But this behavior conflicts with the historical one, if-none should only be ignored if forwardfor is also enabled on the backend and if-none is not set there. It should fix GH #2187. This should be backported in 2.8 with 730b983 ("MINOR: proxy: move 'forwardfor' option to http_ext") --- src/http_ext.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/http_ext.c b/src/http_ext.c index d1bae9c2a..9d70086c7 100644 --- a/src/http_ext.c +++ b/src/http_ext.c @@ -790,8 +790,8 @@ int http_handle_xff_header(struct stream *s, struct channel *req) struct http_hdr_ctx ctx = { .blk = NULL }; struct ist hdr = ((b_xff) ? b_xff->hdr_name : f_xff->hdr_name); - if (f_xff && f_xff->mode == HTTP_XFF_IFNONE && - b_xff && b_xff->mode == HTTP_XFF_IFNONE && + if ((!f_xff || f_xff->mode == HTTP_XFF_IFNONE) && + (!b_xff || b_xff->mode == HTTP_XFF_IFNONE) && http_find_header(htx, hdr, &ctx, 0)) { /* The header is set to be added only if none is present * and we found it, so don't do anything.