add_message: Re-fix handling of non-mail files.
authorCarl Worth <cworth@cworth.org>
Fri, 20 Nov 2009 20:46:37 +0000 (21:46 +0100)
committerCarl Worth <cworth@cworth.org>
Fri, 20 Nov 2009 20:46:37 +0000 (21:46 +0100)
More fallout from _get_header now returning "" for missing headers.

The bug here is that we would no longer detect that a file is not an
email message and give up on it like we should.

And this time, I actually audited all callers to
notmuch_message_get_header, so hopefully we're done fixing this
bug over and over.

lib/database.cc
lib/message.cc

index 58a350d2f59e8368006d681a2508d20453b2254b..207246cc5dc0387a04083c460b869515614fd970 100644 (file)
@@ -323,7 +323,7 @@ _parse_message_id (void *ctx, const char *message_id, const char **next)
     const char *s, *end;
     char *result;
 
-    if (message_id == NULL)
+    if (message_id == NULL || *message_id == '\0')
        return NULL;
 
     s = message_id;
@@ -391,7 +391,7 @@ parse_references (void *ctx,
 {
     char *ref;
 
-    if (refs == NULL)
+    if (refs == NULL || *refs == '\0')
        return;
 
     while (*refs) {
@@ -896,9 +896,9 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
        subject = notmuch_message_file_get_header (message_file, "subject");
        to = notmuch_message_file_get_header (message_file, "to");
 
-       if (from == NULL &&
-           subject == NULL &&
-           to == NULL)
+       if ((from == NULL || *from == '\0') &&
+           (subject == NULL || *subject == '\0') &&
+           (to == NULL || *to == '\0'))
        {
            ret = NOTMUCH_STATUS_FILE_NOT_EMAIL;
            goto DONE;
index 41dddd077ea9939d703e95f0606dc1bfc023f053..e0b8a8e111925342e82d38d26ff8064b551915f0 100644 (file)
@@ -491,7 +491,7 @@ _notmuch_message_set_date (notmuch_message_t *message,
 
     /* GMime really doesn't want to see a NULL date, so protect its
      * sensibilities. */
-    if (date == NULL)
+    if (date == NULL || *date == '\0')
        time_value = 0;
     else
        time_value = g_mime_utils_header_decode_date (date, NULL);