X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Findex.cc;h=728bfb22ab69c4eef52795cf86d7971c7d42e2fe;hb=bfcf9a6c102af9232b6d2e720f919ff1c9b431f8;hp=826aa341d678b2345962cb944becee6b8b50f202;hpb=6cdf4b7e38000c6d0a14ff04ab71f7c7e60835ec;p=notmuch diff --git a/lib/index.cc b/lib/index.cc index 826aa341..728bfb22 100644 --- a/lib/index.cc +++ b/lib/index.cc @@ -148,8 +148,6 @@ notmuch_filter_discard_non_term_class_init (NotmuchFilterDiscardNonTermClass *kl GObjectClass *object_class = G_OBJECT_CLASS (klass); GMimeFilterClass *filter_class = GMIME_FILTER_CLASS (klass); - parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER); - object_class->finalize = notmuch_filter_discard_non_term_finalize; filter_class->copy = filter_copy; @@ -240,29 +238,33 @@ filter_reset (GMimeFilter *gmime_filter) * * Returns: a new #NotmuchFilterDiscardNonTerm filter. **/ +static GType type = 0; + +static const GTypeInfo info = { + .class_size = sizeof (NotmuchFilterDiscardNonTermClass), + .base_init = NULL, + .base_finalize = NULL, + .class_init = (GClassInitFunc) notmuch_filter_discard_non_term_class_init, + .class_finalize = NULL, + .class_data = NULL, + .instance_size = sizeof (NotmuchFilterDiscardNonTerm), + .n_preallocs = 0, + .instance_init = NULL, + .value_table = NULL, +}; + +void +_notmuch_filter_init () { + type = g_type_register_static (GMIME_TYPE_FILTER, "NotmuchFilterDiscardNonTerm", &info, + (GTypeFlags) 0); + parent_class = (GMimeFilterClass *) g_type_class_ref (GMIME_TYPE_FILTER); +} + static GMimeFilter * notmuch_filter_discard_non_term_new (GMimeContentType *content_type) { - static GType type = 0; NotmuchFilterDiscardNonTerm *filter; - if (! type) { - static const GTypeInfo info = { - .class_size = sizeof (NotmuchFilterDiscardNonTermClass), - .base_init = NULL, - .base_finalize = NULL, - .class_init = (GClassInitFunc) notmuch_filter_discard_non_term_class_init, - .class_finalize = NULL, - .class_data = NULL, - .instance_size = sizeof (NotmuchFilterDiscardNonTerm), - .n_preallocs = 0, - .instance_init = NULL, - .value_table = NULL, - }; - - type = g_type_register_static (GMIME_TYPE_FILTER, "NotmuchFilterDiscardNonTerm", &info, (GTypeFlags) 0); - } - filter = (NotmuchFilterDiscardNonTerm *) g_object_new (type, NULL); filter->content_type = content_type; filter->state = 0; @@ -455,7 +457,8 @@ _index_mime_part (notmuch_message_t *message, msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) { toindex = _notmuch_repair_crypto_payload_skip_legacy_display (child); if (toindex != child) - notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display"); + notmuch_message_add_property (message, "index.repaired", + "skip-protected-headers-legacy-display"); } _index_mime_part (message, indexopts, toindex, msg_crypto); } @@ -467,7 +470,8 @@ _index_mime_part (notmuch_message_t *message, mime_message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (part)); - _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message), msg_crypto); + _index_mime_part (message, indexopts, g_mime_message_get_mime_part (mime_message), + msg_crypto); goto DONE; } @@ -567,6 +571,7 @@ _index_encrypted_mime_part (notmuch_message_t *message, bool attempted = false; GMimeDecryptResult *decrypt_result = NULL; bool get_sk = (notmuch_indexopts_get_decrypt_policy (indexopts) == NOTMUCH_DECRYPT_TRUE); + clear = _notmuch_crypto_decrypt (&attempted, notmuch_indexopts_get_decrypt_policy (indexopts), message, encrypted_data, get_sk ? &decrypt_result : NULL, &err); if (! attempted) @@ -595,7 +600,8 @@ _index_encrypted_mime_part (notmuch_message_t *message, notmuch_status_to_string (status)); if (get_sk) { status = notmuch_message_add_property (message, "session-key", - g_mime_decrypt_result_get_session_key (decrypt_result)); + g_mime_decrypt_result_get_session_key ( + decrypt_result)); if (status) _notmuch_database_log (notmuch, "failed to add session-key " "property (%d)\n", status); @@ -603,11 +609,14 @@ _index_encrypted_mime_part (notmuch_message_t *message, g_object_unref (decrypt_result); } GMimeObject *toindex = clear; - if (_notmuch_message_crypto_potential_payload (msg_crypto, clear, encrypted_data, GMIME_MULTIPART_ENCRYPTED_CONTENT) && + + if (_notmuch_message_crypto_potential_payload (msg_crypto, clear, encrypted_data, + GMIME_MULTIPART_ENCRYPTED_CONTENT) && msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) { toindex = _notmuch_repair_crypto_payload_skip_legacy_display (clear); if (toindex != clear) - notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display"); + notmuch_message_add_property (message, "index.repaired", + "skip-protected-headers-legacy-display"); } _index_mime_part (message, indexopts, toindex, msg_crypto); g_object_unref (clear); @@ -640,7 +649,8 @@ _index_pkcs7_part (notmuch_message_t *message, if (p7type == GMIME_SECURE_MIME_TYPE_SIGNED_DATA) { sigs = g_mime_application_pkcs7_mime_verify (pkcs7, GMIME_VERIFY_NONE, &mimeobj, &err); if (sigs == NULL) { - _notmuch_database_log (notmuch, "Failed to verify PKCS#7 SignedData during indexing. (%d:%d) [%s]\n", + _notmuch_database_log (notmuch, + "Failed to verify PKCS#7 SignedData during indexing. (%d:%d) [%s]\n", err->domain, err->code, err->message); g_error_free (err); goto DONE; @@ -651,7 +661,8 @@ _index_pkcs7_part (notmuch_message_t *message, msg_crypto->decryption_status == NOTMUCH_MESSAGE_DECRYPTED_FULL) { toindex = _notmuch_repair_crypto_payload_skip_legacy_display (mimeobj); if (toindex != mimeobj) - notmuch_message_add_property (message, "index.repaired", "skip-protected-headers-legacy-display"); + notmuch_message_add_property (message, "index.repaired", + "skip-protected-headers-legacy-display"); } _index_mime_part (message, indexopts, toindex, msg_crypto); } else if (p7type == GMIME_SECURE_MIME_TYPE_ENVELOPED_DATA) { @@ -663,7 +674,7 @@ _index_pkcs7_part (notmuch_message_t *message, _notmuch_database_log (notmuch, "Cannot currently handle PKCS#7 smime-type '%s'\n", g_mime_object_get_content_type_parameter (part, "smime-type")); } - DONE: + DONE: if (mimeobj) g_object_unref (mimeobj); if (sigs)