X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Findex.cc;h=f216ae5deb44becd81874bc5309cbb4ac4762e5b;hp=efd9da4ca015681d624be82354a06d1f5f0c7855;hb=adb53b073791f710b93a8fc755b6b7b606bf7fd1;hpb=3d0fd40eb0eca54fd05460203ae754c63f633d69 diff --git a/lib/index.cc b/lib/index.cc index efd9da4c..f216ae5d 100644 --- a/lib/index.cc +++ b/lib/index.cc @@ -357,7 +357,7 @@ _index_content_type (notmuch_message_t *message, GMimeObject *part) { GMimeContentType *content_type = g_mime_object_get_content_type (part); if (content_type) { - char *mime_string = g_mime_content_type_to_string (content_type); + char *mime_string = g_mime_content_type_get_mime_type (content_type); if (mime_string) { _notmuch_message_gen_terms (message, "mimetype", mime_string); g_free (mime_string); @@ -367,7 +367,6 @@ _index_content_type (notmuch_message_t *message, GMimeObject *part) static void _index_encrypted_mime_part (notmuch_message_t *message, notmuch_indexopts_t *indexopts, - GMimeContentType *content_type, GMimeMultipartEncrypted *part); /* Callback to generate terms for each mime part of a message. */ @@ -392,7 +391,6 @@ _index_mime_part (notmuch_message_t *message, } _index_content_type (message, part); - content_type = g_mime_object_get_content_type (part); if (GMIME_IS_MULTIPART (part)) { GMimeMultipart *multipart = GMIME_MULTIPART (part); @@ -421,7 +419,6 @@ _index_mime_part (notmuch_message_t *message, g_mime_multipart_get_part (multipart, i)); if (i == GMIME_MULTIPART_ENCRYPTED_CONTENT) { _index_encrypted_mime_part(message, indexopts, - content_type, GMIME_MULTIPART_ENCRYPTED (part)); } else { if (i != GMIME_MULTIPART_ENCRYPTED_VERSION) { @@ -476,6 +473,7 @@ _index_mime_part (notmuch_message_t *message, filter = g_mime_stream_filter_new (stream); + content_type = g_mime_object_get_content_type (part); discard_non_term_filter = notmuch_filter_discard_non_term_new (content_type); g_mime_stream_filter_add (GMIME_STREAM_FILTER (filter), @@ -495,7 +493,7 @@ _index_mime_part (notmuch_message_t *message, } } - wrapper = g_mime_part_get_content_object (GMIME_PART (part)); + wrapper = g_mime_part_get_content (GMIME_PART (part)); if (wrapper) g_mime_data_wrapper_write_to_stream (wrapper, filter); @@ -518,7 +516,6 @@ _index_mime_part (notmuch_message_t *message, static void _index_encrypted_mime_part (notmuch_message_t *message, notmuch_indexopts_t *indexopts, - g_mime_3_unused(GMimeContentType *content_type), GMimeMultipartEncrypted *encrypted_data) { notmuch_status_t status; @@ -531,29 +528,11 @@ _index_encrypted_mime_part (notmuch_message_t *message, notmuch = notmuch_message_get_database (message); - GMimeCryptoContext* crypto_ctx = NULL; -#if (GMIME_MAJOR_VERSION < 3) - { - const char *protocol = NULL; - protocol = g_mime_content_type_get_parameter (content_type, "protocol"); - status = _notmuch_crypto_get_gmime_ctx_for_protocol (&(indexopts->crypto), - protocol, &crypto_ctx); - if (status) { - _notmuch_database_log (notmuch, "Warning: setup failed for decrypting " - "during indexing. (%d)\n", status); - status = notmuch_message_add_property (message, "index.decryption", "failure"); - if (status) - _notmuch_database_log_append (notmuch, "failed to add index.decryption " - "property (%d)\n", status); - return; - } - } -#endif bool attempted = false; GMimeDecryptResult *decrypt_result = NULL; - bool get_sk = (HAVE_GMIME_SESSION_KEYS && notmuch_indexopts_get_decrypt_policy (indexopts) == NOTMUCH_DECRYPT_TRUE); + bool get_sk = (notmuch_indexopts_get_decrypt_policy (indexopts) == NOTMUCH_DECRYPT_TRUE); clear = _notmuch_crypto_decrypt (&attempted, notmuch_indexopts_get_decrypt_policy (indexopts), - message, crypto_ctx, encrypted_data, get_sk ? &decrypt_result : NULL, &err); + message, encrypted_data, get_sk ? &decrypt_result : NULL, &err); if (!attempted) return; if (err || !clear) { @@ -574,7 +553,6 @@ _index_encrypted_mime_part (notmuch_message_t *message, return; } if (decrypt_result) { -#if HAVE_GMIME_SESSION_KEYS if (get_sk) { status = notmuch_message_add_property (message, "session-key", g_mime_decrypt_result_get_session_key (decrypt_result)); @@ -582,7 +560,6 @@ _index_encrypted_mime_part (notmuch_message_t *message, _notmuch_database_log (notmuch, "failed to add session-key " "property (%d)\n", status); } -#endif g_object_unref (decrypt_result); } _index_mime_part (message, indexopts, clear); @@ -595,6 +572,31 @@ _index_encrypted_mime_part (notmuch_message_t *message, } +static notmuch_status_t +_notmuch_message_index_user_headers (notmuch_message_t *message, GMimeMessage *mime_message) +{ + + notmuch_database_t *notmuch = notmuch_message_get_database (message); + notmuch_string_map_iterator_t *iter = _notmuch_database_user_headers (notmuch); + + for (; _notmuch_string_map_iterator_valid (iter); + _notmuch_string_map_iterator_move_to_next (iter)) { + + const char *prefix_name = _notmuch_string_map_iterator_key (iter); + + const char *header_name = _notmuch_string_map_iterator_value (iter); + + const char *header = g_mime_object_get_header (GMIME_OBJECT (mime_message), header_name); + if (header) + _notmuch_message_gen_terms (message, prefix_name, header); + } + + if (iter) + _notmuch_string_map_iterator_destroy (iter); + return NOTMUCH_STATUS_SUCCESS; + +} + notmuch_status_t _notmuch_message_index_file (notmuch_message_t *message, notmuch_indexopts_t *indexopts, @@ -613,7 +615,6 @@ _notmuch_message_index_file (notmuch_message_t *message, addresses = g_mime_message_get_from (mime_message); if (addresses) { _index_address_list (message, "from", addresses); - g_mime_2_6_unref (addresses); } addresses = g_mime_message_get_all_recipients (mime_message); @@ -625,6 +626,8 @@ _notmuch_message_index_file (notmuch_message_t *message, subject = g_mime_message_get_subject (mime_message); _notmuch_message_gen_terms (message, "subject", subject); + status = _notmuch_message_index_user_headers (message, mime_message); + _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message)); return NOTMUCH_STATUS_SUCCESS;