diff --git a/src/peerstate.rs b/src/peerstate.rs index d8369304a..5d79b63ab 100644 --- a/src/peerstate.rs +++ b/src/peerstate.rs @@ -156,7 +156,7 @@ impl<'a> Peerstate<'a> { context: &'a Context, _sql: &Sql, fingerprint: &Fingerprint, - ) -> Option> { + ) -> Result>> { 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); } diff --git a/src/qr.rs b/src/qr.rs index ba4eae45e..dd8bcece4 100644 --- a/src/qr.rs +++ b/src/qr.rs @@ -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 { diff --git a/src/securejoin.rs b/src/securejoin.rs index 5979da87e..200791984 100644 --- a/src/securejoin.rs +++ b/src/securejoin.rs @@ -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,