Resultify Peerstate::from_fingerprint

This commit is contained in:
Alexander Krotov
2020-08-05 00:00:00 +03:00
committed by link2xt
parent cfd222a109
commit 5bfa82e7ec
3 changed files with 9 additions and 14 deletions

View File

@@ -156,7 +156,7 @@ impl<'a> Peerstate<'a> {
context: &'a Context,
_sql: &Sql,
fingerprint: &Fingerprint,
) -> Option<Peerstate<'a>> {
) -> Result<Option<Peerstate<'a>>> {
let query = "SELECT addr, last_seen, last_seen_autocrypt, prefer_encrypted, public_key, \
gossip_timestamp, gossip_key, public_key_fingerprint, gossip_key_fingerprint, \
verified_key, verified_key_fingerprint \
@@ -165,16 +165,7 @@ impl<'a> Peerstate<'a> {
OR gossip_key_fingerprint=? COLLATE NOCASE \
ORDER BY public_key_fingerprint=? DESC;";
let fp = fingerprint.hex();
match Self::from_stmt(context, query, paramsv![fp, fp, fp]).await {
Ok(peerstate) => peerstate,
Err(err) => {
warn!(
context,
"Can't load peerstate for fingerprint {}: {}", fingerprint, err
);
None
}
}
Self::from_stmt(context, query, paramsv![fp, fp, fp]).await
}
async fn from_stmt(
@@ -524,7 +515,8 @@ mod tests {
let peerstate_new2 =
Peerstate::from_fingerprint(&ctx.ctx, &ctx.ctx.sql, &pub_key.fingerprint())
.await
.expect("failed to load peerstate from db");
.expect("failed to load peerstate from db")
.expect("no peerstate found in the database");
assert_eq!(peerstate, peerstate_new2);
}

View File

@@ -143,7 +143,10 @@ async fn decode_openpgp(context: &Context, qr: &str) -> Lot {
let mut lot = Lot::new();
// retrieve known state for this fingerprint
let peerstate = Peerstate::from_fingerprint(context, &context.sql, &fingerprint).await;
let peerstate = match Peerstate::from_fingerprint(context, &context.sql, &fingerprint).await {
Ok(peerstate) => peerstate,
Err(err) => return format_err!("Can't load peerstate: {}", err).into(),
};
if invitenumber.is_none() || auth.is_none() {
if let Some(peerstate) = peerstate {

View File

@@ -987,7 +987,7 @@ async fn could_not_establish_secure_connection(
async fn mark_peer_as_verified(context: &Context, fingerprint: &Fingerprint) -> Result<(), Error> {
if let Some(ref mut peerstate) =
Peerstate::from_fingerprint(context, &context.sql, fingerprint).await
Peerstate::from_fingerprint(context, &context.sql, fingerprint).await?
{
if peerstate.set_verified(
PeerstateKeyType::PublicKey,