From ae331c677260b351b652e7c2d99cc91c616e3209 Mon Sep 17 00:00:00 2001 From: zonyitoo Date: Sat, 25 May 2024 00:44:17 +0800 Subject: [PATCH] fix(local-fake-dns): recreate database if meta parse failed --- .../src/local/fake_dns/manager.rs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/crates/shadowsocks-service/src/local/fake_dns/manager.rs b/crates/shadowsocks-service/src/local/fake_dns/manager.rs index c7d2c1fd..83db7d6a 100644 --- a/crates/shadowsocks-service/src/local/fake_dns/manager.rs +++ b/crates/shadowsocks-service/src/local/fake_dns/manager.rs @@ -174,18 +174,21 @@ impl FakeDnsManager { let key = "shadowsocks_fakedns_meta"; if let Some(v) = db.get(key)? { - let c = proto::StorageMeta::decode(&v)?; - if c.version == FAKE_DNS_MANAGER_STORAGE_VERSION { - if ipv4_network_str != c.ipv4_network || ipv6_network_str != c.ipv6_network { - warn!( - "IPv4 network {} (storage {}), IPv6 network {} (storage {}) not match", - ipv4_network_str, c.ipv4_network, ipv6_network_str, c.ipv6_network - ); + if let Ok(c) = proto::StorageMeta::decode(&v) { + if c.version == FAKE_DNS_MANAGER_STORAGE_VERSION { + if ipv4_network_str != c.ipv4_network || ipv6_network_str != c.ipv6_network { + warn!( + "IPv4 network {} (storage {}), IPv6 network {} (storage {}) not match", + ipv4_network_str, c.ipv4_network, ipv6_network_str, c.ipv6_network + ); + } else { + recreate_database = false; + } } else { - recreate_database = false; + warn!("storage version {} not match, recreating database", c.version); } } else { - warn!("storage version {} not match", c.version); + warn!("storage meta parse failed. recreating database"); } }