]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-new.c
Do not defer maildir flag synchronization for new messages
[notmuch] / notmuch-new.c
index 4f3e52fb455832398a7940d0dc4ec80448155334..7aa0674d186c3fbd8a71e42460338a5232c237a9 100644 (file)
@@ -308,9 +308,16 @@ add_files_recursive (notmuch_database_t *notmuch,
        next = NULL;
     }
 
-    /* If this directory hasn't been modified since the last
-     * "notmuch new", then we can skip the second pass entirely. */
-    if (fs_mtime <= db_mtime)
+    /* If the directory's modification time in the filesystem is the
+     * same as what we recorded in the database the last time we
+     * scanned it, then we can skip the second pass entirely.
+     *
+     * We test for strict equality here to avoid a bug that can happen
+     * if the system clock jumps backward, (preventing new mail from
+     * being discovered until the clock catches up and the directory
+     * is modified again).
+     */
+    if (fs_mtime == db_mtime)
        goto DONE;
 
     /* Pass 2: Scan for new files, removed files, and removed directories. */
@@ -413,11 +420,8 @@ add_files_recursive (notmuch_database_t *notmuch,
            state->added_messages++;
            for (tag=state->new_tags; *tag != NULL; tag++)
                notmuch_message_add_tag (message, *tag);
-           /* Defer sync of maildir flags until after old filenames
-            * are removed in the case of a rename. */
            if (state->synchronize_flags == TRUE)
-               _filename_list_add (state->message_ids_to_sync,
-                                   notmuch_message_get_message_id (message));
+               notmuch_message_maildir_flags_to_tags (message);
            break;
        /* Non-fatal issues (go on to next file) */
        case NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID: