Viktor Dukhovni:
> On Wed, Sep 30, 2015 at 12:54:51PM +0200, Daniel Caillibaud wrote:
>
> > I have quite a lot (~200 / day)
> > panic: cleanup_find_header_start: short header without padding
> > in my mail.log
>
> The patch below might help:
Indeed. The bug was that all PREPENDed text was output with
cleanup_out_string(), whereas headers must be output with
cleanup_out_header().
Wietse
> diff --git a/src/cleanup/cleanup_message.c b/src/cleanup/cleanup_message.c
> index 47b7177..b0ae686 100644
> --- a/src/cleanup/cleanup_message.c
> +++ b/src/cleanup/cleanup_message.c
> @@ -385,11 +385,15 @@ static const char *cleanup_act(CLEANUP_STATE *state,
> char *context,
> if (STREQUAL(value, "PREPEND", command_len)) {
> if (*optional_text == 0) {
> msg_warn("PREPEND action without text in %s map", map_class);
> - } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0
> - && !is_header(optional_text)) {
> - msg_warn("bad PREPEND header text \"%s\" in %s map -- "
> - "need \"headername: headervalue\"",
> - optional_text, map_class);
> + } else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0) {
> + if (!is_header(optional_text)) {
> + msg_warn("bad PREPEND header text \"%s\" in %s map -- "
> + "need \"headername: headervalue\"",
> + optional_text, map_class);
> + return (buf);
> + }
> + cleanup_act_log(state, "prepend", context, buf, optional_text);
> + cleanup_out_header(state, optional_text);
> } else {
> cleanup_act_log(state, "prepend", context, buf, optional_text);
> cleanup_out_string(state, REC_TYPE_NORM, optional_text);
>
> --
> Viktor.
>