From: William Lallemand Date: Wed, 12 Feb 2025 11:09:05 +0000 (+0100) Subject: BUG/MINOR: mworker: section ignored in discovery after a post_section_parser X-Git-Tag: v3.2-dev6~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2c270a05f;p=thirdparty%2Fhaproxy.git BUG/MINOR: mworker: section ignored in discovery after a post_section_parser When a new section is discovered, the post_section_parser of the previous section is called. However in the new master-worker mode the discovery mode will skip the post_section_parser. But instead of trying to parse the current section keyword after that, it would skip completely the current line. This is a minor bug since there isn't a lot of section with post_section_parser, and not a lot of section to parse in discovery mode. But this could be reproduced like this: global expose-deprecated-directives resolvers res parse-resolv-conf program foo command sleep 10 program bar command sleep 10 Ths 'resolvers' section has a post_section_parser which will be ignored in discovery mode with the consequence of ignoring the first program section. This must be backported in 3.1. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 216c8dcfe..9b9718258 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2578,7 +2578,7 @@ next_line: /* don't call post_section_parser in MODE_DISCOVERY, except program section */ if ((global.mode & MODE_DISCOVERY) && (strcmp(pcs->section_name, "program") != 0)) - continue; + goto section_parser; status = pcs->post_section_parser(); err_code |= status; @@ -2590,6 +2590,7 @@ next_line: } pcs = NULL; +section_parser: if (!cs) { /* ignore unknown section names during the first read in MODE_DISCOVERY */ if (global.mode & MODE_DISCOVERY)