mirror of
https://github.com/chatmail/core.git
synced 2026-05-02 04:46:29 +03:00
Use if let to avoid unwrap() of peerstate
This commit is contained in:
committed by
holger krekel
parent
a82f2a5df3
commit
742f603b3b
@@ -1374,31 +1374,31 @@ fn check_verified_properties(
|
|||||||
context.is_self_addr(&to_addr)
|
context.is_self_addr(&to_addr)
|
||||||
);
|
);
|
||||||
let mut is_verified = _is_verified != 0;
|
let mut is_verified = _is_verified != 0;
|
||||||
let mut peerstate = Peerstate::from_addr(context, &context.sql, &to_addr);
|
let peerstate = Peerstate::from_addr(context, &context.sql, &to_addr);
|
||||||
|
|
||||||
// mark gossiped keys (if any) as verified
|
// mark gossiped keys (if any) as verified
|
||||||
if mimeparser.gossipped_addr.contains(&to_addr) && peerstate.is_some() {
|
if mimeparser.gossipped_addr.contains(&to_addr) {
|
||||||
let peerstate = peerstate.as_mut().unwrap();
|
if let Some(mut peerstate) = peerstate {
|
||||||
|
// if we're here, we know the gossip key is verified:
|
||||||
// if we're here, we know the gossip key is verified:
|
// - use the gossip-key as verified-key if there is no verified-key
|
||||||
// - use the gossip-key as verified-key if there is no verified-key
|
// - OR if the verified-key does not match public-key or gossip-key
|
||||||
// - OR if the verified-key does not match public-key or gossip-key
|
// (otherwise a verified key can _only_ be updated through QR scan which might be annoying,
|
||||||
// (otherwise a verified key can _only_ be updated through QR scan which might be annoying,
|
// see https://github.com/nextleap-project/countermitm/issues/46 for a discussion about this point)
|
||||||
// see https://github.com/nextleap-project/countermitm/issues/46 for a discussion about this point)
|
if !is_verified
|
||||||
if !is_verified
|
|| peerstate.verified_key_fingerprint != peerstate.public_key_fingerprint
|
||||||
|| peerstate.verified_key_fingerprint != peerstate.public_key_fingerprint
|
&& peerstate.verified_key_fingerprint != peerstate.gossip_key_fingerprint
|
||||||
&& peerstate.verified_key_fingerprint != peerstate.gossip_key_fingerprint
|
{
|
||||||
{
|
info!(context, "{} has verified {}.", contact.get_addr(), to_addr,);
|
||||||
info!(context, "{} has verified {}.", contact.get_addr(), to_addr,);
|
let fp = peerstate.gossip_key_fingerprint.clone();
|
||||||
let fp = peerstate.gossip_key_fingerprint.clone();
|
if let Some(fp) = fp {
|
||||||
if let Some(fp) = fp {
|
peerstate.set_verified(
|
||||||
peerstate.set_verified(
|
PeerstateKeyType::GossipKey,
|
||||||
PeerstateKeyType::GossipKey,
|
&fp,
|
||||||
&fp,
|
PeerstateVerifiedStatus::BidirectVerified,
|
||||||
PeerstateVerifiedStatus::BidirectVerified,
|
);
|
||||||
);
|
peerstate.save_to_db(&context.sql, false)?;
|
||||||
peerstate.save_to_db(&context.sql, false)?;
|
is_verified = true;
|
||||||
is_verified = true;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user