X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fmessage-file.c;h=a2850c278b5a10ba9a5041a6662aab4ed09e3861;hp=7722832e9158411e8101f21cb163f0f0051b9854;hb=3fed6736a7ef8b8b1f05d0fabb136bdd3b5917ee;hpb=5b8b0377cb68904eac8fc58a933d47f605a81725 diff --git a/lib/message-file.c b/lib/message-file.c index 7722832e..a2850c27 100644 --- a/lib/message-file.c +++ b/lib/message-file.c @@ -111,7 +111,7 @@ _notmuch_message_file_open_ctx (void *ctx, const char *filename) message->headers = g_hash_table_new_full (strcase_hash, strcase_equal, free, - free); + g_free); message->parsing_started = 0; message->parsing_finished = 0; @@ -228,7 +228,7 @@ notmuch_message_file_get_header (notmuch_message_file_t *message, is_received = (strcmp(header_desired,"received") == 0); if (! initialized) { - g_mime_init (0); + g_mime_init (GMIME_ENABLE_RFC2047_WORKAROUNDS); initialized = 1; } @@ -329,7 +329,7 @@ notmuch_message_file_get_header (notmuch_message_file_t *message, /* we treat the Received: header special - we want to concat ALL of * the Received: headers we encounter. * for everything else we return the first instance of a header */ - if (is_received) { + if (strcasecmp(header, "received") == 0) { if (header_sofar == NULL) { /* first Received: header we encountered; just add it */ g_hash_table_insert (message->headers, header, decoded_value); @@ -337,16 +337,21 @@ notmuch_message_file_get_header (notmuch_message_file_t *message, /* we need to add the header to those we already collected */ newhdr = strlen(decoded_value); hdrsofar = strlen(header_sofar); - combined_header = xmalloc(hdrsofar + newhdr + 2); + combined_header = g_malloc(hdrsofar + newhdr + 2); strncpy(combined_header,header_sofar,hdrsofar); *(combined_header+hdrsofar) = ' '; strncpy(combined_header+hdrsofar+1,decoded_value,newhdr+1); + g_free (decoded_value); g_hash_table_insert (message->headers, header, combined_header); } } else { if (header_sofar == NULL) { /* Only insert if we don't have a value for this header, yet. */ g_hash_table_insert (message->headers, header, decoded_value); + } else { + free (header); + g_free (decoded_value); + decoded_value = header_sofar; } } /* if we found a match we can bail - unless of course we are