Replace Peerstate.degrade_event with bool

DegradeEvent::EncryptionPaused was always ignored, so it can be removed.
This commit is contained in:
Alexander Krotov
2020-08-13 22:53:03 +03:00
committed by holger krekel
parent 55389c4190
commit 2feecbc9ff

View File

@@ -43,7 +43,7 @@ pub struct Peerstate<'a> {
pub verified_key: Option<SignedPublicKey>, pub verified_key: Option<SignedPublicKey>,
pub verified_key_fingerprint: Option<Fingerprint>, pub verified_key_fingerprint: Option<Fingerprint>,
pub to_save: Option<ToSave>, pub to_save: Option<ToSave>,
pub degrade_event: Option<DegradeEvent>, pub fingerprint_changed: bool,
} }
impl<'a> PartialEq for Peerstate<'a> { impl<'a> PartialEq for Peerstate<'a> {
@@ -60,7 +60,7 @@ impl<'a> PartialEq for Peerstate<'a> {
&& self.verified_key == other.verified_key && self.verified_key == other.verified_key
&& self.verified_key_fingerprint == other.verified_key_fingerprint && self.verified_key_fingerprint == other.verified_key_fingerprint
&& self.to_save == other.to_save && self.to_save == other.to_save
&& self.degrade_event == other.degrade_event && self.fingerprint_changed == other.fingerprint_changed
} }
} }
@@ -81,7 +81,7 @@ impl<'a> fmt::Debug for Peerstate<'a> {
.field("verified_key", &self.verified_key) .field("verified_key", &self.verified_key)
.field("verified_key_fingerprint", &self.verified_key_fingerprint) .field("verified_key_fingerprint", &self.verified_key_fingerprint)
.field("to_save", &self.to_save) .field("to_save", &self.to_save)
.field("degrade_event", &self.degrade_event) .field("fingerprint_changed", &self.fingerprint_changed)
.finish() .finish()
} }
} }
@@ -93,16 +93,6 @@ pub enum ToSave {
All = 0x02, All = 0x02,
} }
#[derive(Debug, Copy, Clone, PartialEq, Eq, FromPrimitive, ToPrimitive)]
#[repr(u8)]
pub enum DegradeEvent {
/// Recoverable by an incoming encrypted mail.
EncryptionPaused = 0x01,
/// Recoverable by a new verify.
FingerprintChanged = 0x02,
}
impl<'a> Peerstate<'a> { impl<'a> Peerstate<'a> {
pub fn new(context: &'a Context, addr: String) -> Self { pub fn new(context: &'a Context, addr: String) -> Self {
Peerstate { Peerstate {
@@ -119,7 +109,7 @@ impl<'a> Peerstate<'a> {
verified_key: None, verified_key: None,
verified_key_fingerprint: None, verified_key_fingerprint: None,
to_save: None, to_save: None,
degrade_event: None, fingerprint_changed: false,
} }
} }
@@ -237,7 +227,7 @@ impl<'a> Peerstate<'a> {
{ {
self.to_save = Some(ToSave::All); self.to_save = Some(ToSave::All);
if old_public_fingerprint.is_some() { if old_public_fingerprint.is_some() {
self.degrade_event = Some(DegradeEvent::FingerprintChanged); self.fingerprint_changed = true;
} }
} }
} }
@@ -252,17 +242,13 @@ impl<'a> Peerstate<'a> {
{ {
self.to_save = Some(ToSave::All); self.to_save = Some(ToSave::All);
if old_gossip_fingerprint.is_some() { if old_gossip_fingerprint.is_some() {
self.degrade_event = Some(DegradeEvent::FingerprintChanged); self.fingerprint_changed = true;
} }
} }
} }
} }
pub fn degrade_encryption(&mut self, message_time: i64) { pub fn degrade_encryption(&mut self, message_time: i64) {
if self.prefer_encrypt == EncryptPreference::Mutual {
self.degrade_event = Some(DegradeEvent::EncryptionPaused);
}
self.prefer_encrypt = EncryptPreference::Reset; self.prefer_encrypt = EncryptPreference::Reset;
self.last_seen = message_time; self.last_seen = message_time;
self.to_save = Some(ToSave::All); self.to_save = Some(ToSave::All);
@@ -270,37 +256,29 @@ impl<'a> Peerstate<'a> {
/// Adds a warning to the chat corresponding to peerstate if fingerprint has changed. /// Adds a warning to the chat corresponding to peerstate if fingerprint has changed.
pub(crate) async fn handle_degrade_event(&self, context: &Context) -> Result<()> { pub(crate) async fn handle_degrade_event(&self, context: &Context) -> Result<()> {
match self.degrade_event { if self.fingerprint_changed {
Some(DegradeEvent::FingerprintChanged) => { if let Some(contact_id) = context
if let Some(contact_id) = context .sql
.sql .query_get_value_result(
.query_get_value_result( "SELECT id FROM contacts WHERE addr=?;",
"SELECT id FROM contacts WHERE addr=?;", paramsv![self.addr],
paramsv![self.addr], )
) .await?
.await? {
{ let (contact_chat_id, _) =
let (contact_chat_id, _) = chat::create_or_lookup_by_contact_id( chat::create_or_lookup_by_contact_id(context, contact_id, Blocked::Deaddrop)
context, .await
contact_id, .unwrap_or_default();
Blocked::Deaddrop,
)
.await
.unwrap_or_default();
let msg = context let msg = context
.stock_string_repl_str(StockMessage::ContactSetupChanged, self.addr.clone()) .stock_string_repl_str(StockMessage::ContactSetupChanged, self.addr.clone())
.await; .await;
chat::add_info_msg(context, contact_chat_id, msg).await; chat::add_info_msg(context, contact_chat_id, msg).await;
emit_event!(context, EventType::ChatModified(contact_chat_id)); emit_event!(context, EventType::ChatModified(contact_chat_id));
} else { } else {
bail!("contact with peerstate.addr {:?} not found", &self.addr); bail!("contact with peerstate.addr {:?} not found", &self.addr);
}
} }
// A warning for this is not issued, as it is quite normal.
Some(DegradeEvent::EncryptionPaused) => {}
None => {}
} }
Ok(()) Ok(())
} }
@@ -318,11 +296,6 @@ impl<'a> Peerstate<'a> {
|| header.prefer_encrypt == EncryptPreference::NoPreference) || header.prefer_encrypt == EncryptPreference::NoPreference)
&& header.prefer_encrypt != self.prefer_encrypt && header.prefer_encrypt != self.prefer_encrypt
{ {
if self.prefer_encrypt == EncryptPreference::Mutual
&& header.prefer_encrypt != EncryptPreference::Mutual
{
self.degrade_event = Some(DegradeEvent::EncryptionPaused);
}
self.prefer_encrypt = header.prefer_encrypt; self.prefer_encrypt = header.prefer_encrypt;
self.to_save = Some(ToSave::All) self.to_save = Some(ToSave::All)
} }
@@ -537,7 +510,7 @@ mod tests {
verified_key: Some(pub_key.clone()), verified_key: Some(pub_key.clone()),
verified_key_fingerprint: Some(pub_key.fingerprint()), verified_key_fingerprint: Some(pub_key.fingerprint()),
to_save: Some(ToSave::All), to_save: Some(ToSave::All),
degrade_event: None, fingerprint_changed: false,
}; };
assert!( assert!(
@@ -581,7 +554,7 @@ mod tests {
verified_key: None, verified_key: None,
verified_key_fingerprint: None, verified_key_fingerprint: None,
to_save: Some(ToSave::All), to_save: Some(ToSave::All),
degrade_event: None, fingerint_changed: false,
}; };
assert!( assert!(
@@ -615,7 +588,7 @@ mod tests {
verified_key: None, verified_key: None,
verified_key_fingerprint: None, verified_key_fingerprint: None,
to_save: Some(ToSave::All), to_save: Some(ToSave::All),
degrade_event: None, fingerprint_changed: false,
}; };
assert!( assert!(