X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=message.c;h=1a5994ff5a03f721b8ed0474a092328e73880db2;hp=03583c8d0e43f122215bdbcdd6e7c9ca92242a79;hb=ad784f38ce30d39b058325baf050eb784fb9a02e;hpb=b6dd413903370bd9b4f50428a32276f1f8457937 diff --git a/message.c b/message.c index 03583c8d..1a5994ff 100644 --- a/message.c +++ b/message.c @@ -37,6 +37,8 @@ struct _notmuch_message { /* Header storage */ int restrict_headers; GHashTable *headers; + int broken_headers; + int good_headers; /* Parsing state */ char *line; @@ -234,12 +236,21 @@ notmuch_message_get_header (notmuch_message_t *message, colon = strchr (message->line, ':'); if (colon == NULL) { - fprintf (stderr, "Warning: Unexpected non-header line: %s\n", - message->line); + message->broken_headers++; + /* A simple heuristic for giving up on things that just + * don't look like mail messages. */ + if (message->broken_headers >= 10 && + message->good_headers < 5) + { + message->parsing_finished = 1; + continue; + } NEXT_HEADER_LINE (NULL); continue; } + message->good_headers++; + header = xstrndup (message->line, colon - message->line); if (message->restrict_headers &&