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.
* 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);