Use if let to avoid unwrap() of peerstate

This commit is contained in:
Alexander Krotov
2020-01-11 15:39:44 +03:00
committed by holger krekel
parent a82f2a5df3
commit 742f603b3b

View File

@@ -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; }
} }
} }
} }