diff --git a/src/lib-sieve/edit-mail.c b/src/lib-sieve/edit-mail.c index 0cbaaf0d2a5b47dfbb9d403d7a6bab1f899c9248..986756f4521829178c1409bcf7138a7371acf504 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 cef84c4860d595b6d2e6b510dd6c5bad186c9239..44d459c7100f8e6fa8c73ba10110d814c0afa21b 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 "; + } + +} +