From 74cf003bdc8949cc6653a91d5fdcabdd1c7b3eb6 Mon Sep 17 00:00:00 2001 From: hanzhe-one <200491821+hanzhe-one@users.noreply.github.com> Date: Wed, 30 Sep 2026 01:13:05 +0800 Subject: [PATCH] Fix: correct TLS key check and zookeeper diff map lookup #206 - transport/service.rs: remove stray `!` in the TLS guard. `!self.keys.len() != 0` parsed as `(!self.keys.len()) != 0`, which is always true, so `keys.remove(0)` could panic when certs are present but keys are empty. - registry/zookeeper/src/lib.rs: the second loop in `diff()` queried `old_urls_map` instead of `new_urls_map`, so `removed_hosts` never collected offline nodes and consumers kept sending requests to zombie providers. Signed-off-by: hanzhe-one <200491821+hanzhe-one@users.noreply.github.com> --- dubbo/src/triple/transport/service.rs | 2 +- registry/zookeeper/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dubbo/src/triple/transport/service.rs b/dubbo/src/triple/transport/service.rs index 355a3f1f..5b41ef86 100644 --- a/dubbo/src/triple/transport/service.rs +++ b/dubbo/src/triple/transport/service.rs @@ -169,7 +169,7 @@ impl DubboServer { }; let acceptor: Option; - if self.certs.len() != 0 && !self.keys.len() != 0 { + if self.certs.len() != 0 && self.keys.len() != 0 { let mut keys = self.keys; let config = rustls::ServerConfig::builder() diff --git a/registry/zookeeper/src/lib.rs b/registry/zookeeper/src/lib.rs index 8de2bd16..c75d3c23 100644 --- a/registry/zookeeper/src/lib.rs +++ b/registry/zookeeper/src/lib.rs @@ -226,7 +226,7 @@ impl ZookeeperRegistry { } for (key, old_host) in old_urls_map.iter() { - let new_host = old_urls_map.get(key); + let new_host = new_urls_map.get(key); match new_host { None => { removed_hosts.push(old_host.clone());