From dc4fa1de65db6c68ce15d559bfd182fa64805c5d Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Wed, 5 Aug 2020 00:00:00 +0300 Subject: [PATCH] peerstate: ignore invalid fingerprints in SQL Normally NULL is used when there is no fingerprint, but default value for fingerprint columns is an empty string. In this case, loading should not fail with an "invalid length" error, but treat the fingerprint as missing. Strict check was introduced in commit ca95f25639e90dfa7d028b6ce89e3a81a0bf09dd --- src/peerstate.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/peerstate.rs b/src/peerstate.rs index 8df0c7b4f..b864a2e40 100644 --- a/src/peerstate.rs +++ b/src/peerstate.rs @@ -186,15 +186,18 @@ impl<'a> Peerstate<'a> { res.public_key_fingerprint = row .get::<_, Option>(7)? .map(|s| s.parse::()) - .transpose()?; + .transpose() + .unwrap_or_default(); res.gossip_key_fingerprint = row .get::<_, Option>(8)? .map(|s| s.parse::()) - .transpose()?; + .transpose() + .unwrap_or_default(); res.verified_key_fingerprint = row .get::<_, Option>(10)? .map(|s| s.parse::()) - .transpose()?; + .transpose() + .unwrap_or_default(); res.public_key = row .get(4) .ok()