mirror of https://github.com/djcb/mu.git
message: use fake Message-ID when empty
Previously, mu generated a fake message ID for messages without a Message-ID header. This fake message ID allows these messages to show in an --include-related query. However, if a message contained a Message-ID header with the value equal to the empty string, we did not generate a fake message ID in the index, and consequently, these messages failed to appear in an --include-related query. This change uses a fake message ID when the Message-ID header is absent _or_ empty.
This commit is contained in:
parent
c169049064
commit
fcfbbcacfe
|
@ -638,7 +638,10 @@ fill_document(Message::Private& priv)
|
|||
|
||||
const auto path{doc.string_value(Field::Id::Path)};
|
||||
const auto refs{mime_msg.references()};
|
||||
const auto message_id{mime_msg.message_id().value_or(fake_message_id(path))};
|
||||
const auto& raw_message_id = mime_msg.message_id();
|
||||
const auto message_id = raw_message_id.has_value() && !raw_message_id->empty()
|
||||
? *raw_message_id
|
||||
: fake_message_id(path);
|
||||
|
||||
process_message(mime_msg, path, priv);
|
||||
|
||||
|
|
|
@ -969,6 +969,48 @@ id Emoji", EmojiSymbols;">
|
|||
}
|
||||
|
||||
|
||||
static void
|
||||
test_message_message_id()
|
||||
{
|
||||
constexpr const auto msg1 =
|
||||
R"(From: "Mu Test" <mu@djcbsoftware.nl>
|
||||
To: mu@djcbsoftware.nl
|
||||
Message-ID: <87lew9xddt.fsf@djcbsoftware.nl>
|
||||
|
||||
abc
|
||||
)";
|
||||
|
||||
constexpr const auto msg2 =
|
||||
R"(From: "Mu Test" <mu@djcbsoftware.nl>
|
||||
To: mu@djcbsoftware.nl
|
||||
|
||||
abc
|
||||
)";
|
||||
|
||||
constexpr const auto msg3 =
|
||||
R"(From: "Mu Test" <mu@djcbsoftware.nl>
|
||||
To: mu@djcbsoftware.nl
|
||||
Message-ID:
|
||||
|
||||
abc
|
||||
)";
|
||||
|
||||
const auto m1{Message::make_from_text(msg1, "/foo/cur/m123:2,S")};
|
||||
assert_valid_result(m1);
|
||||
|
||||
const auto m2{Message::make_from_text(msg2, "/foo/cur/m456:2,S")};
|
||||
assert_valid_result(m2);
|
||||
const auto m3{Message::make_from_text(msg3, "/foo/cur/m789:2,S")};
|
||||
assert_valid_result(m3);
|
||||
|
||||
assert_equal(m1->message_id(), "87lew9xddt.fsf@djcbsoftware.nl");
|
||||
|
||||
/* both with absent and empty message-id, generate "random" fake one,
|
||||
* which must end in @mu.id */
|
||||
g_assert_true(g_str_has_suffix(m2->message_id().c_str(), "@mu.id"));
|
||||
g_assert_true(g_str_has_suffix(m3->message_id().c_str(), "@mu.id"));
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
test_message_fail ()
|
||||
|
@ -1015,6 +1057,8 @@ main(int argc, char* argv[])
|
|||
test_message_references);
|
||||
g_test_add_func("/message/message/outlook-body",
|
||||
test_message_outlook_body);
|
||||
g_test_add_func("/message/message/message-id",
|
||||
test_message_message_id);
|
||||
g_test_add_func("/message/message/fail",
|
||||
test_message_fail);
|
||||
g_test_add_func("/message/message/sanitize-maildir",
|
||||
|
|
Loading…
Reference in New Issue