@@ -6,6 +6,7 @@ use sphinx::route::{Node as SphinxNode, NodeAddressBytes};
6
6
use std:: cmp:: max;
7
7
use std:: collections:: HashMap ;
8
8
use std:: net:: SocketAddr ;
9
+ use version_checker;
9
10
10
11
#[ derive( Debug , Clone ) ]
11
12
pub struct MixNode {
@@ -167,27 +168,33 @@ pub trait NymTopology: Sized {
167
168
168
169
fn filter_node_versions (
169
170
& 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 ,
173
174
) -> Self {
174
175
let filtered_mixes = self
175
176
. get_mix_nodes ( )
176
177
. iter ( )
178
+ . filter ( |mix_node| {
179
+ version_checker:: is_compatible ( & mix_node. version , expected_mix_version)
180
+ } )
177
181
. cloned ( )
178
- . filter ( |mix_node| mix_node. version == mix_version)
179
182
. collect ( ) ;
180
183
let filtered_providers = self
181
184
. get_mix_provider_nodes ( )
182
185
. iter ( )
186
+ . filter ( |provider_node| {
187
+ version_checker:: is_compatible ( & provider_node. version , expected_provider_version)
188
+ } )
183
189
. cloned ( )
184
- . filter ( |provider_node| provider_node. version == provider_version)
185
190
. collect ( ) ;
186
191
let filtered_coco_nodes = self
187
192
. get_coco_nodes ( )
188
193
. iter ( )
194
+ . filter ( |coco_node| {
195
+ version_checker:: is_compatible ( & coco_node. version , expected_coco_version)
196
+ } )
189
197
. cloned ( )
190
- . filter ( |coco_node| coco_node. version == coco_version)
191
198
. collect ( ) ;
192
199
193
200
Self :: new_from_nodes ( filtered_mixes, filtered_providers, filtered_coco_nodes)
0 commit comments