From ab7c033383e940360e6822ecf46c9959e7a6e104 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Sun, 26 Jun 2016 19:21:26 +0200 Subject: [PATCH] Reconnecting to lost peers when receiving from them or sending to them --- CHANGELOG.md | 5 ++++- src/cloud.rs | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f5d45a..a0d8184 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,10 @@ This project follows [semantic versioning](http://semver.org). - [changed] Updated dependencies - [changed] Turned some clippy warnings off -- [changed] Cross-compiling for ARMv7 +- [changed] Cross-compiling for ARM +- [removed] Removed Address remove code for prefix table +- [fixed] Reconnecting to lost peers when receiving from them or sending to them +- [fixed] Sending peer list more often to prevent timeouts ### v0.6.0 (2016-06-02) diff --git a/src/cloud.rs b/src/cloud.rs index aeb922a..a2f20a3 100644 --- a/src/cloud.rs +++ b/src/cloud.rs @@ -362,11 +362,11 @@ impl GenericCloud

{ match self.table.lookup(&dst) { Some(addr) => { debug!("Found destination for {} => {}", dst, addr); - if self.peers.contains_addr(&addr) { - try!(self.send_msg(addr, &mut Message::Data(payload, start, end))) - } else { + try!(self.send_msg(addr, &mut Message::Data(payload, start, end))); + if !self.peers.contains_addr(&addr) { warn!("Destination for {} not found in peers: {}", dst, addr); self.table.remove(&dst); + try!(self.connect(&addr)); } }, None => { @@ -406,6 +406,9 @@ impl GenericCloud

{ } }, Message::Peers(peers) => { + if !self.peers.contains_addr(&peer) { + try!(self.connect(&peer)); + } for p in &peers { if ! self.peers.contains_addr(p) && ! self.blacklist_peers.contains(p) { try!(self.connect(p));