]> git.notmuchmail.org Git - notmuch/blobdiff - lib/add-message.cc
lib: add notmuch_message_reindex
[notmuch] / lib / add-message.cc
index 2922eaa9e9b2f8088d0b454a841d85bb1668862d..711ed9fac80cc045aa641420ec993eb3420f94ef 100644 (file)
@@ -220,7 +220,7 @@ _my_talloc_free_for_g_hash (void *ptr)
     talloc_free (ptr);
 }
 
-static notmuch_status_t
+notmuch_status_t
 _notmuch_database_link_message_to_parents (notmuch_database_t *notmuch,
                                           notmuch_message_t *message,
                                           notmuch_message_file_t *message_file,
@@ -529,19 +529,22 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
            if (is_ghost)
                /* Convert ghost message to a regular message */
                _notmuch_message_remove_term (message, "type", "ghost");
-           ret = _notmuch_database_link_message (notmuch, message,
+       }
+
+       ret = _notmuch_database_link_message (notmuch, message,
                                                  message_file, is_ghost);
-           if (ret)
-               goto DONE;
+       if (ret)
+           goto DONE;
 
+       if (is_new || is_ghost)
            _notmuch_message_set_header_values (message, date, from, subject);
 
-           ret = _notmuch_message_index_file (message, message_file);
-           if (ret)
-               goto DONE;
-       } else {
+       ret = _notmuch_message_index_file (message, message_file);
+       if (ret)
+           goto DONE;
+
+       if (! is_new && !is_ghost)
            ret = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID;
-       }
 
        _notmuch_message_sync (message);
     } catch (const Xapian::Error &error) {