]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap: ENVELOPE parsing/writing no longer strips whitespace from machine readable...
authorTimo Sirainen <tss@iki.fi>
Wed, 24 Oct 2012 08:28:38 +0000 (11:28 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 24 Oct 2012 08:28:38 +0000 (11:28 +0300)
src/lib-imap/imap-envelope.c

index 028917d3fc7de20d17dae76bf2923658e1ef3ae6..ad49584ba276d7c0b18848c141a0c572a222c7b9 100644 (file)
@@ -147,11 +147,17 @@ void imap_envelope_parse_header(pool_t pool,
                *addr_p = message_address_parse(pool, hdr->full_value,
                                                hdr->full_value_len,
                                                (unsigned int)-1, TRUE);
-       }
-
-       if (str_p != NULL) {
-               *str_p = imap_quote(pool, hdr->full_value,
-                                   hdr->full_value_len, TRUE);
+       } else if (str_p != NULL) {
+               if (str_p != &d->subject) {
+                       string_t *str = t_str_new(128);
+
+                       imap_append_string(str,
+                               t_strndup(hdr->full_value, hdr->full_value_len));
+                       *str_p = p_strdup(pool, str_c(str));
+               } else {
+                       *str_p = imap_quote(pool, hdr->full_value,
+                                           hdr->full_value_len, TRUE);
+               }
        }
 }
 
@@ -167,11 +173,11 @@ static void imap_write_address(string_t *str, struct message_address *addr)
                str_append_c(str, '(');
                imap_quote_append_string(str, addr->name, TRUE);
                str_append_c(str, ' ');
-               imap_quote_append_string(str, addr->route, TRUE);
+               imap_append_nstring(str, addr->route);
                str_append_c(str, ' ');
-               imap_quote_append_string(str, addr->mailbox, TRUE);
+               imap_append_nstring(str, addr->mailbox);
                str_append_c(str, ' ');
-               imap_quote_append_string(str, addr->domain, TRUE);
+               imap_append_nstring(str, addr->domain);
                str_append_c(str, ')');
 
                addr = addr->next;