From 783fdcaeb4c7480d43cd2663491fa21f92aa1de7 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Thu, 28 Feb 2013 23:37:31 +0100
Subject: [PATCH] Sieve: editheader: fixed bug in header cloning for snapshot.
 Forgot to increment count for the clone.

---
 src/lib-sieve/edit-mail.c                     |  1 +
 .../extensions/editheader/alternating.svtest  | 59 +++++++++++++++++++
 2 files changed, 60 insertions(+)

diff --git a/src/lib-sieve/edit-mail.c b/src/lib-sieve/edit-mail.c
index 0cbaaf0d2..986756f45 100644
--- a/src/lib-sieve/edit-mail.c
+++ b/src/lib-sieve/edit-mail.c
@@ -321,6 +321,7 @@ struct edit_mail *edit_mail_snapshot(struct edit_mail *edmail)
 				(&edmail_new->header_fields_head, &edmail_new->header_fields_tail,
 					field_idx_new);
 
+			field_idx_new->header->count++;
 			if ( field_idx->header->first == field_idx )
 				field_idx_new->header->first = field_idx_new;
 			if ( field_idx->header->last == field_idx )
diff --git a/tests/extensions/editheader/alternating.svtest b/tests/extensions/editheader/alternating.svtest
index cef84c486..44d459c71 100644
--- a/tests/extensions/editheader/alternating.svtest
+++ b/tests/extensions/editheader/alternating.svtest
@@ -120,3 +120,62 @@ test "Alternating - delete; add" {
 		test_fail "wrong content in redirected mail ";
 	}
 }
+
+test_result_reset;
+
+test_set "message" "${message}";
+test "Alternating - add :last; delete any" {
+	addheader :last "X-Some-Header" "Header content";
+
+	if not exists "x-some-header" {
+		test_fail "header not added";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content added";
+	}
+
+	redirect "frop@example.com";
+
+	deleteheader "X-Some-Other-Header";
+
+	if not exists "x-some-header" {
+		test_fail "header somehow deleted";
+	}
+
+	fileinto :create "folder3";
+
+	if not test_result_execute {
+		test_fail "failed to execute result";
+	}
+
+	/* redirected message */
+
+	if not test_message :smtp 0 {
+		test_fail "message not redirected";
+	}
+
+	if not exists "x-some-header" {
+		test_fail "added header not in redirected mail";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content in redirected mail ";
+	}
+
+	/* stored message message */
+
+	if not test_message :folder "folder3" 0 {
+		test_fail "message not stored";
+	}
+
+	if not exists "x-some-header" {
+		test_fail "added header lost in stored mail";
+	}
+
+	if not header :is "x-some-header" "Header content" {
+		test_fail "wrong content in stored mail ";
+	}
+
+}
+
-- 
GitLab