Skip to content

Commit 1704eb6

Browse files
tentative fix for ipv6 address issues
1 parent 5766390 commit 1704eb6

File tree

3 files changed

+15
-20
lines changed

3 files changed

+15
-20
lines changed

src/sdam/description/server.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ impl ServerDescription {
306306
Ok(set_name)
307307
}
308308

309-
pub(crate) fn known_hosts(&self) -> Result<impl Iterator<Item = &String>> {
309+
pub(crate) fn known_hosts(&self) -> Result<Vec<ServerAddress>> {
310310
let known_hosts = self
311311
.reply
312312
.as_ref()
@@ -324,7 +324,11 @@ impl ServerDescription {
324324
.chain(arbiters.into_iter().flatten())
325325
});
326326

327-
Ok(known_hosts.into_iter().flatten())
327+
known_hosts
328+
.into_iter()
329+
.flatten()
330+
.map(ServerAddress::parse)
331+
.collect()
328332
}
329333

330334
pub(crate) fn invalid_me(&self) -> Result<bool> {

src/sdam/description/topology.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ impl TopologyDescription {
603603
return Ok(());
604604
}
605605

606-
self.add_new_servers(server_description.known_hosts()?)?;
606+
self.add_new_servers(server_description.known_hosts()?);
607607

608608
if server_description.invalid_me()? {
609609
self.servers.remove(&server_description.address);
@@ -697,11 +697,11 @@ impl TopologyDescription {
697697
}
698698
}
699699

700-
self.add_new_servers(server_description.known_hosts()?)?;
701-
let known_hosts: HashSet<_> = server_description.known_hosts()?.collect();
700+
let known_hosts = server_description.known_hosts()?;
701+
self.add_new_servers(known_hosts.clone());
702702

703703
for address in addresses {
704-
if !known_hosts.contains(&address.to_string()) {
704+
if !known_hosts.contains(&address) {
705705
self.servers.remove(&address);
706706
}
707707
}
@@ -728,20 +728,9 @@ impl TopologyDescription {
728728
}
729729

730730
/// Create a new ServerDescription for each address and add it to the topology.
731-
fn add_new_servers<'a>(&mut self, servers: impl Iterator<Item = &'a String>) -> Result<()> {
732-
let servers: Result<Vec<_>> = servers.map(ServerAddress::parse).collect();
733-
734-
self.add_new_servers_from_addresses(servers?.iter());
735-
Ok(())
736-
}
737-
738-
/// Create a new ServerDescription for each address and add it to the topology.
739-
fn add_new_servers_from_addresses<'a>(
740-
&mut self,
741-
servers: impl Iterator<Item = &'a ServerAddress>,
742-
) {
731+
fn add_new_servers(&mut self, servers: Vec<ServerAddress>) {
743732
for server in servers {
744-
if !self.servers.contains_key(server) {
733+
if !self.servers.contains_key(&server) {
745734
self.servers
746735
.insert(server.clone(), ServerDescription::new(server.clone()));
747736
}

src/sdam/topology.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,9 @@ impl TopologyWorker {
377377
UpdateMessage::SyncHosts(hosts) => {
378378
self.sync_hosts(hosts).await
379379
}
380-
UpdateMessage::ServerUpdate(sd) => self.update_server(*sd).await,
380+
UpdateMessage::ServerUpdate(sd) => {
381+
self.update_server(*sd).await
382+
}
381383
UpdateMessage::MonitorError { address, error } => {
382384
self.handle_monitor_error(address, error).await
383385
}

0 commit comments

Comments
 (0)