mirror of
https://github.com/chatmail/core.git
synced 2026-05-18 22:36:29 +03:00
fix: receive_imf: Set protection only for Chattype::Single (#4597)
Also don't set protection to ProtectionBroken if it already is. Co-authored-by: Hocuri <hocuri@gmx.de>
This commit is contained in:
@@ -728,12 +728,17 @@ async fn add_parts(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// The next block checks if the message was sent with verified encryption
|
// Check if the message was sent with verified encryption and set the protection of
|
||||||
// and sets the protection of the 1:1 chat accordingly.
|
// the 1:1 chat accordingly.
|
||||||
if is_partial_download.is_none()
|
let chat = match is_partial_download.is_none()
|
||||||
&& mime_parser.get_header(HeaderDef::SecureJoin).is_none()
|
&& mime_parser.get_header(HeaderDef::SecureJoin).is_none()
|
||||||
&& !is_mdn
|
&& !is_mdn
|
||||||
{
|
{
|
||||||
|
true => Some(Chat::load_from_db(context, chat_id).await?)
|
||||||
|
.filter(|chat| chat.typ == Chattype::Single),
|
||||||
|
false => None,
|
||||||
|
};
|
||||||
|
if let Some(chat) = chat {
|
||||||
let mut new_protection = match has_verified_encryption(
|
let mut new_protection = match has_verified_encryption(
|
||||||
context,
|
context,
|
||||||
mime_parser,
|
mime_parser,
|
||||||
@@ -747,17 +752,15 @@ async fn add_parts(
|
|||||||
VerifiedEncryption::NotVerified(_) => ProtectionStatus::Unprotected,
|
VerifiedEncryption::NotVerified(_) => ProtectionStatus::Unprotected,
|
||||||
};
|
};
|
||||||
|
|
||||||
let chat = Chat::load_from_db(context, chat_id).await?;
|
if chat.protected != ProtectionStatus::Unprotected
|
||||||
|
&& new_protection == ProtectionStatus::Unprotected
|
||||||
|
// `chat.protected` must be maintained regardless of the `Config::VerifiedOneOnOneChats`.
|
||||||
|
// That's why the config is checked here, and not above.
|
||||||
|
&& context.get_config_bool(Config::VerifiedOneOnOneChats).await?
|
||||||
|
{
|
||||||
|
new_protection = ProtectionStatus::ProtectionBroken;
|
||||||
|
}
|
||||||
if chat.protected != new_protection {
|
if chat.protected != new_protection {
|
||||||
if new_protection == ProtectionStatus::Unprotected
|
|
||||||
&& context
|
|
||||||
.get_config_bool(Config::VerifiedOneOnOneChats)
|
|
||||||
.await?
|
|
||||||
{
|
|
||||||
new_protection = ProtectionStatus::ProtectionBroken;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The message itself will be sorted under the device message since the device
|
// The message itself will be sorted under the device message since the device
|
||||||
// message is `MessageState::InNoticed`, which means that all following
|
// message is `MessageState::InNoticed`, which means that all following
|
||||||
// messages are sorted under it.
|
// messages are sorted under it.
|
||||||
|
|||||||
Reference in New Issue
Block a user