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,
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) {