X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fmessage-file.c;h=0c152a3973ac719a8dc7bf51f1050c8a52604ceb;hp=8a3f8ee0fd2b66e04e0dd3e68b4abea37ae591f7;hb=a48f3687785b2c138b2c47848bd05512fc893a0b;hpb=091d18c54c046a08bda9d88982601589a1deea37 diff --git a/lib/message-file.c b/lib/message-file.c index 8a3f8ee0..0c152a39 100644 --- a/lib/message-file.c +++ b/lib/message-file.c @@ -282,7 +282,7 @@ notmuch_message_file_get_header (notmuch_message_file_t *message, message->good_headers < 5) { message->parsing_finished = 1; - continue; + break; } NEXT_HEADER_LINE (NULL); continue; @@ -318,13 +318,24 @@ notmuch_message_file_get_header (notmuch_message_file_t *message, match = (strcasecmp (header, header_desired) == 0); decoded_value = g_mime_utils_header_decode_text (message->value.str); - - g_hash_table_insert (message->headers, header, decoded_value); - + if (g_hash_table_lookup (message->headers, header) == NULL) { + /* Only insert if we don't have a value for this header, yet. + * This way we always return the FIRST instance of any header + * we search for + * FIXME: we should be returning ALL instances of a header + * or at least provide a way to iterate over them + */ + g_hash_table_insert (message->headers, header, decoded_value); + } if (match) return decoded_value; } + if (message->parsing_finished) { + fclose (message->file); + message->file = NULL; + } + if (message->line) free (message->line); message->line = NULL;