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