diff --git a/p2p/Cargo.toml b/p2p/Cargo.toml index e0c9c153b..3c5d71777 100644 --- a/p2p/Cargo.toml +++ b/p2p/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "grin_p2p_fut" +name = "grin_p2p" version = "0.1.0" authors = ["Ignotus Peverell "] diff --git a/p2p/src/server.rs b/p2p/src/server.rs index 423f21c47..a128492c9 100644 --- a/p2p/src/server.rs +++ b/p2p/src/server.rs @@ -117,9 +117,9 @@ impl Server { pub fn connect_peer(&self, addr: SocketAddr, h: reactor::Handle) - -> Box> { - let socket = TcpStream::connect(&addr, &h).map_err(|e| Error::IOErr(e)); + -> Box> { let peers = self.peers.clone(); + let socket = TcpStream::connect(&addr, &h).map_err(|e| Error::IOErr(e)); let request = socket.and_then(move |socket| { let peers = peers.clone(); @@ -128,10 +128,15 @@ impl Server { let peer_connect = add_to_peers(peers, Peer::connect(socket, &Handshake::new())); with_timeout(Box::new(peer_connect), &h) }) - .and_then(|(socket, peer)| peer.run(socket, &DummyAdapter {})); + .and_then(|(socket, peer)| peer.run(socket, &DummyAdapter {})) + .map_err(|_| ()); Box::new(request) } + pub fn peers_count(&self) -> u32 { + self.peers.read().unwrap().len() as u32 + } + /// Stops the server. Disconnect from all peers at the same time. pub fn stop(self) { let peers = self.peers.write().unwrap(); diff --git a/p2p/tests/peer_handshake.rs b/p2p/tests/peer_handshake.rs index 8768aeb77..b13f1c6ff 100644 --- a/p2p/tests/peer_handshake.rs +++ b/p2p/tests/peer_handshake.rs @@ -13,7 +13,7 @@ // limitations under the License. extern crate grin_core as core; -extern crate grin_p2p_fut as p2p; +extern crate grin_p2p as p2p; extern crate env_logger; extern crate futures; extern crate tokio_core; @@ -60,7 +60,11 @@ fn peer_handshake() { assert!(sent > 0); assert!(recv > 0); Ok(()) - }).and_then(|_| {server.stop(); Ok(())}) + }).and_then(|_| { + assert!(server.peers_count() > 0); + server.stop(); + Ok(()) + }) }).map_err(|e| { panic!("Client connection failed: {}", e); }));