]> git.notmuchmail.org Git - notmuch/blobdiff - database.cc
Fix _notmuch_message_create to catch Xapian DocNotFoundError.
[notmuch] / database.cc
index a6539ffe0fd9869268ea14c43336d4b0b28a4e45..b58d92d974915c52808c4f761aaf3a750606c906 100644 (file)
@@ -50,42 +50,6 @@ notmuch_status_to_string (notmuch_status_t status)
     }
 }
 
-/* "128 bits of thread-id ought to be enough for anybody" */
-#define NOTMUCH_THREAD_ID_BITS  128
-#define NOTMUCH_THREAD_ID_DIGITS (NOTMUCH_THREAD_ID_BITS / 4)
-typedef struct _thread_id {
-    char str[NOTMUCH_THREAD_ID_DIGITS + 1];
-} thread_id_t;
-
-static void
-thread_id_generate (thread_id_t *thread_id)
-{
-    static int seeded = 0;
-    FILE *dev_random;
-    uint32_t value;
-    char *s;
-    int i;
-
-    if (! seeded) {
-       dev_random = fopen ("/dev/random", "r");
-       if (dev_random == NULL) {
-           srand (time (NULL));
-       } else {
-           fread ((void *) &value, sizeof (value), 1, dev_random);
-           srand (value);
-           fclose (dev_random);
-       }
-       seeded = 1;
-    }
-
-    s = thread_id->str;
-    for (i = 0; i < NOTMUCH_THREAD_ID_DIGITS; i += 8) {
-       value = rand ();
-       sprintf (s, "%08x", value);
-       s += 8;
-    }
-}
-
 /* XXX: We should drop this function and convert all callers to call
  * _notmuch_message_add_term instead. */
 static void
@@ -518,21 +482,6 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
                                           (char *) NULL);
 
     try {
-       doc.set_data (filename);
-
-       add_term (doc, "type", "mail");
-
-       parents = g_ptr_array_new ();
-
-       refs = notmuch_message_file_get_header (message_file, "references");
-       parse_references (parents, refs);
-
-       in_reply_to = notmuch_message_file_get_header (message_file, "in-reply-to");
-       parse_references (parents, in_reply_to);
-
-       for (i = 0; i < parents->len; i++)
-           add_term (doc, "ref", (char *) g_ptr_array_index (parents, i));
-
        header = notmuch_message_file_get_header (message_file, "message-id");
        if (header) {
            message_id = parse_message_id (header, NULL);
@@ -555,6 +504,21 @@ notmuch_database_add_message (notmuch_database_t *notmuch,
            free (sha1);
        }
 
+       doc.set_data (filename);
+
+       add_term (doc, "type", "mail");
+
+       parents = g_ptr_array_new ();
+
+       refs = notmuch_message_file_get_header (message_file, "references");
+       parse_references (parents, refs);
+
+       in_reply_to = notmuch_message_file_get_header (message_file, "in-reply-to");
+       parse_references (parents, in_reply_to);
+
+       for (i = 0; i < parents->len; i++)
+           add_term (doc, "ref", (char *) g_ptr_array_index (parents, i));
+
        thread_ids = find_thread_ids (notmuch, parents, message_id);
 
        for (i = 0; i < parents->len; i++)