Skip to content

Commit 65f5683

Browse files
committed
topology: checking for compatible semver between nodes and clients
1 parent 44116e4 commit 65f5683

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

common/topology/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ serde = { version = "1.0.104", features = ["derive"] }
1616

1717
## internal
1818
addressing = {path = "../addressing"}
19+
version-checker = {path = "../version-checker" }
1920

2021
## will be moved to proper dependencies once released
2122
sphinx = { git = "https://github.com/nymtech/sphinx", rev="1d8cefcb6a0cb8e87d00d89eb1ccf2839e92aa1f" }

common/topology/src/lib.rs

+13-6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use sphinx::route::{Node as SphinxNode, NodeAddressBytes};
66
use std::cmp::max;
77
use std::collections::HashMap;
88
use std::net::SocketAddr;
9+
use version_checker;
910

1011
#[derive(Debug, Clone)]
1112
pub struct MixNode {
@@ -167,27 +168,33 @@ pub trait NymTopology: Sized {
167168

168169
fn filter_node_versions(
169170
&self,
170-
mix_version: &str,
171-
provider_version: &str,
172-
coco_version: &str,
171+
expected_mix_version: &str,
172+
expected_provider_version: &str,
173+
expected_coco_version: &str,
173174
) -> Self {
174175
let filtered_mixes = self
175176
.get_mix_nodes()
176177
.iter()
178+
.filter(|mix_node| {
179+
version_checker::is_compatible(&mix_node.version, expected_mix_version)
180+
})
177181
.cloned()
178-
.filter(|mix_node| mix_node.version == mix_version)
179182
.collect();
180183
let filtered_providers = self
181184
.get_mix_provider_nodes()
182185
.iter()
186+
.filter(|provider_node| {
187+
version_checker::is_compatible(&provider_node.version, expected_provider_version)
188+
})
183189
.cloned()
184-
.filter(|provider_node| provider_node.version == provider_version)
185190
.collect();
186191
let filtered_coco_nodes = self
187192
.get_coco_nodes()
188193
.iter()
194+
.filter(|coco_node| {
195+
version_checker::is_compatible(&coco_node.version, expected_coco_version)
196+
})
189197
.cloned()
190-
.filter(|coco_node| coco_node.version == coco_version)
191198
.collect();
192199

193200
Self::new_from_nodes(filtered_mixes, filtered_providers, filtered_coco_nodes)

0 commit comments

Comments
 (0)