diff --git a/fluent-bit/patches/0003-prepend_length_in_syslog_output.patch b/fluent-bit/patches/0003-prepend_length_in_syslog_output.patch new file mode 100644 index 000000000..03fca9cef --- /dev/null +++ b/fluent-bit/patches/0003-prepend_length_in_syslog_output.patch @@ -0,0 +1,47 @@ +diff --git a/plugins/out_syslog/syslog.c b/plugins/out_syslog/syslog.c +index 4ecc7c4ac..cfe568245 100644 +--- a/plugins/out_syslog/syslog.c ++++ b/plugins/out_syslog/syslog.c +@@ -776,12 +776,42 @@ static flb_sds_t syslog_format(struct flb_syslog *ctx, msgpack_object *o, + } + + if (ctx->parsed_mode != FLB_SYSLOG_UDP) { ++ unsigned int msg_len = 0; ++ ++ /* Create new SDS for length prefix */ ++ flb_sds_t prefix = flb_sds_create_size(ctx->maxsize + 32); ++ if (!prefix) { ++ ret_sds = NULL; ++ goto clean; ++ } ++ ++ /* Add newline also to make behaviour similar to syslog-ng */ + tmp = flb_sds_cat(*s, "\n", 1); + if (!tmp) { ++ flb_sds_destroy(prefix); + ret_sds = NULL; + goto clean; + } + *s = tmp; ++ ++ msg_len = flb_sds_len(*s); ++ tmp = flb_sds_printf(&prefix, "%u ", msg_len); ++ if (!tmp) { ++ flb_sds_destroy(prefix); ++ ret_sds = NULL; ++ goto clean; ++ } ++ prefix = tmp; ++ ++ tmp = flb_sds_cat(prefix, *s, msg_len); ++ if (!tmp) { ++ flb_sds_destroy(prefix); ++ ret_sds = NULL; ++ goto clean; ++ } ++ ++ flb_sds_destroy(*s); ++ *s = tmp; + } + } + else {