lib: index the content type of signature parts
authorJani Nikula <jani@nikula.org>
Sat, 16 Sep 2017 14:59:04 +0000 (17:59 +0300)
committerDavid Bremner <david@tethera.net>
Sun, 17 Sep 2017 23:01:00 +0000 (20:01 -0300)
It's useful (*) to be able to easily find messages with certain types
of signatures. Having the mimetype: prefix searches fail for some
content types is also genuinely surprising (*). Index the content type
of signature parts.

While at it, switch to the gmime convenience constants for content and
signature part indexes.

*) At least for developers of email software!

lib/index.cc
test/T350-crypto.sh

index 64bc92a5b56d1091fc62db4062f2ebce076e5924..0beaae62f048c37001e699351df030705e2341d9 100644 (file)
@@ -398,12 +398,15 @@ _index_mime_part (notmuch_message_t *message,
 
        for (i = 0; i < g_mime_multipart_get_count (multipart); i++) {
            if (GMIME_IS_MULTIPART_SIGNED (multipart)) {
-               /* Don't index the signature. */
-               if (i == 1)
+               /* Don't index the signature, but index its content type. */
+               if (i == GMIME_MULTIPART_SIGNED_SIGNATURE) {
+                   _index_content_type (message,
+                                        g_mime_multipart_get_part (multipart, i));
                    continue;
-               if (i > 1)
+               } else if (i != GMIME_MULTIPART_SIGNED_CONTENT) {
                    _notmuch_database_log (_notmuch_message_database (message),
-                                         "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n");
+                                          "Warning: Unexpected extra parts of multipart/signed. Indexing anyway.\n");
+               }
            }
            if (GMIME_IS_MULTIPART_ENCRYPTED (multipart)) {
                /* Don't index encrypted parts. */
index 2f1f9ce4913c443ce022094f2c70e35e19d1e204..b8f86256000650da1c24b07fcd33f5259cbed2b4 100755 (executable)
@@ -38,7 +38,6 @@ test_expect_success \
     "(mml-secure-message-sign)"'
 
 test_begin_subtest "signed part content-type indexing"
-test_subtest_known_broken
 output=$(notmuch search mimetype:multipart/signed and mimetype:application/pgp-signature | notmuch_search_sanitize)
 test_expect_equal "$output" "thread:XXX   2000-01-01 [1/1] Notmuch Test Suite; test signed message 001 (inbox signed)"