BUG/MINOR: log: fix broken '+bin' logformat node option

In 12d08cf912 ("BUG/MEDIUM: log: don't ignore disabled node's options"),
while trying to restore historical node option inheritance behavior, I
broke the '+bin' logformat node option recently introduced in b7c3d8c87c
("MINOR: log: add +bin logformat node option").

Indeed, because of 12d08cf912, LOG_OPT_BIN is not set anymore on
individual nodes even if it was set globally, making the feature unusable.
('+bin' is also used for binary cbor encoding)

What I should have done instead is include LOG_OPT_BIN in the options
inherited from global ones. This is what's being done in this commit.
Misleading comment was adjusted.

It must be backported in 3.0 with 12d08cf912.
This commit is contained in:
Aurelien DARRAGON 2024-06-14 18:01:45 +02:00
parent dc1bca4e9f
commit 0030f722a2

View File

@ -969,14 +969,17 @@ static int lf_expr_postcheck_node_opt(struct lf_expr *lf_expr, struct logformat_
* Also, ensure we don't mix encoding types, global setting
* prevails over per-node one.
*
* Finally, ignore LOG_OPT_BIN since it is a global-only option
* Finally, only consider LOG_OPT_BIN if set globally
* (it is a global-only option)
*/
if (lf_expr->nodes.options & LOG_OPT_ENCODE) {
node->options &= ~(LOG_OPT_BIN | LOG_OPT_ENCODE);
node->options |= (lf_expr->nodes.options & LOG_OPT_ENCODE);
node->options |= (lf_expr->nodes.options & (LOG_OPT_BIN | LOG_OPT_ENCODE));
}
else
else {
node->options &= ~LOG_OPT_BIN;
node->options |= (lf_expr->nodes.options & LOG_OPT_BIN);
}
_lf_expr_postcheck_node_opt(&node->options, lf_expr->nodes.options);