From c7882e61a84460173d4a96043625467bb3ba6cc3 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@dovecot.fi> Date: Thu, 17 Aug 2017 00:17:13 +0200 Subject: [PATCH] lib-sieve: vacation extension: Use mail_get_first_header*() rather than mail_get_headers(*). Only the first header is ever of interest. --- src/lib-sieve/plugins/vacation/cmd-vacation.c | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/lib-sieve/plugins/vacation/cmd-vacation.c b/src/lib-sieve/plugins/vacation/cmd-vacation.c index 4c57dedd8..19ace8a8e 100644 --- a/src/lib-sieve/plugins/vacation/cmd-vacation.c +++ b/src/lib-sieve/plugins/vacation/cmd-vacation.c @@ -896,8 +896,7 @@ static int act_vacation_send struct sieve_smtp_context *sctx; struct ostream *output; string_t *msg; - const char *const *headers; - const char *outmsgid, *subject, *error; + const char *header, *outmsgid, *subject, *error; int ret; /* Check smpt functions just to be sure */ @@ -911,14 +910,14 @@ static int act_vacation_send /* Make sure we have a subject for our reply */ if ( ctx->subject == NULL || *(ctx->subject) == '\0' ) { - if ( (ret=mail_get_headers_utf8 - (msgdata->mail, "subject", &headers)) < 0 ) { + if ( (ret=mail_get_first_header_utf8 + (msgdata->mail, "subject", &header)) < 0 ) { return sieve_result_mail_error(aenv, msgdata->mail, "vacation action: " "failed to read header field `subject'"); } - if ( ret > 0 && headers[0] != NULL ) { - subject = t_strconcat("Auto: ", headers[0], NULL); + if ( ret > 0 && header != NULL ) { + subject = t_strconcat("Auto: ", header, NULL); } else { subject = "Automated reply"; } @@ -960,8 +959,8 @@ static int act_vacation_send /* Compose proper in-reply-to and references headers */ - if ( (ret=mail_get_headers - (msgdata->mail, "references", &headers)) < 0 ) { + if ( (ret=mail_get_first_header + (msgdata->mail, "references", &header)) < 0 ) { return sieve_result_mail_error(aenv, msgdata->mail, "vacation action: " "failed to read header field `references'"); @@ -970,14 +969,14 @@ static int act_vacation_send if ( msgdata->id != NULL ) { rfc2822_header_write(msg, "In-Reply-To", msgdata->id); - if ( ret > 0 && headers[0] != NULL ) { + if ( ret > 0 && header != NULL ) { rfc2822_header_write(msg, "References", - t_strconcat(headers[0], " ", msgdata->id, NULL)); + t_strconcat(header, " ", msgdata->id, NULL)); } else { rfc2822_header_write(msg, "References", msgdata->id); } - } else if ( ret > 0 && headers[0] != NULL ) { - rfc2822_header_write(msg, "References", headers[0]); + } else if ( ret > 0 && header != NULL ) { + rfc2822_header_write(msg, "References", header); } rfc2822_header_write(msg, "Auto-Submitted", "auto-replied (vacation)"); -- GitLab