]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: istream-header-filter - fixed adding headers at eoh
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 3 May 2016 15:25:50 +0000 (18:25 +0300)
committerGitLab <gitlab@git.dovecot.net>
Tue, 3 May 2016 16:44:37 +0000 (19:44 +0300)
src/lib-mail/istream-header-filter.c
src/lib-mail/test-istream-header-filter.c

index f2109fca954cfcbc2742e2a6b82ebac8196be997..d772f6de86fdbdd294d6b84ac01d467461444f0e 100644 (file)
@@ -199,7 +199,7 @@ static ssize_t read_header(struct header_filter_istream *mstream)
                if (hdr->eoh) {
                        mstream->seen_eoh = TRUE;
                        matched = TRUE;
-                       if (mstream->header_parsed) {
+                       if (mstream->header_parsed && !mstream->headers_edited) {
                                if (mstream->eoh_not_matched)
                                        matched = !matched;
                        } else if (mstream->callback != NULL) {
index 9ad9ffbe5e5b0abe801d9a29ad521bc745ca68be..7d338c693dc48b1d0fe8cbb8d878a4c5da55b8bb 100644 (file)
@@ -260,7 +260,14 @@ edit_callback(struct header_filter_istream *input,
              struct message_header_line *hdr,
              bool *matched, void *context ATTR_UNUSED)
 {
-       if (hdr != NULL && strcasecmp(hdr->name, "To") == 0) {
+       if (hdr == NULL)
+               return;
+       if (hdr->eoh) {
+               /* add a new header */
+               const char *new_hdr = "Added: header\n\n";
+               i_stream_header_filter_add(input, new_hdr, strlen(new_hdr));
+               *matched = FALSE;
+       } else if (strcasecmp(hdr->name, "To") == 0) {
                /* modify To header */
                const char *new_to = "To: 123\n";
                *matched = TRUE;
@@ -271,7 +278,7 @@ edit_callback(struct header_filter_istream *input,
 static void test_istream_edit(void)
 {
        const char *input = "From: foo\nTo: bar\n\nhello world\n";
-       const char *output = "From: foo\nTo: 123\n\nhello world\n";
+       const char *output = "From: foo\nTo: 123\nAdded: header\n\nhello world\n";
        struct istream *istream, *filter;
 
        test_begin("i_stream_create_header_filter(edit)");