From 7f7d51a748edf53b2269cba0334847a811d1c0b7 Mon Sep 17 00:00:00 2001 From: Antioch Peverell Date: Sat, 30 Nov 2019 23:56:23 +0000 Subject: [PATCH] our TCP listener is nonblocking so we *must* set the accepted stream to blocking explicitly... (#3154) --- p2p/src/serv.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/p2p/src/serv.rs b/p2p/src/serv.rs index bd9476ddb..7e8e87105 100644 --- a/p2p/src/serv.rs +++ b/p2p/src/serv.rs @@ -84,6 +84,14 @@ impl Server { match listener.accept() { Ok((stream, peer_addr)) => { + // We want out TCP stream to be in blocking mode. + // The TCP listener is in nonblocking mode so we *must* explicitly + // move the accepted TCP stream into blocking mode (or all kinds of + // bad things can and will happen). + // A nonblocking TCP listener will accept nonblocking TCP streams which + // we do not want. + stream.set_nonblocking(false)?; + let peer_addr = PeerAddr(peer_addr); if self.check_undesirable(&stream) {