From 5bf9e631817dcc98b0585388a4f7994e96a8db35 Mon Sep 17 00:00:00 2001
From: Arkadiy Paronyan <arkady.paronyan@gmail.com>
Date: Thu, 21 May 2020 13:54:50 +0200
Subject: [PATCH] Optimize network poll (#6099)

---
 .../src/protocol/generic_proto/behaviour.rs   | 25 ++++++-------------
 1 file changed, 7 insertions(+), 18 deletions(-)

diff --git a/substrate/client/network/src/protocol/generic_proto/behaviour.rs b/substrate/client/network/src/protocol/generic_proto/behaviour.rs
index 9d48d40bdfa..b3c209eb0c0 100644
--- a/substrate/client/network/src/protocol/generic_proto/behaviour.rs
+++ b/substrate/client/network/src/protocol/generic_proto/behaviour.rs
@@ -1364,10 +1364,9 @@ impl NetworkBehaviour for GenericProto {
 		}
 
 		for (peer_id, peer_state) in self.peers.iter_mut() {
-			match mem::replace(peer_state, PeerState::Poisoned) {
-				PeerState::PendingRequest { mut timer, timer_deadline } => {
-					if let Poll::Pending = Pin::new(&mut timer).poll(cx) {
-						*peer_state = PeerState::PendingRequest { timer, timer_deadline };
+			match peer_state {
+				PeerState::PendingRequest { timer, .. } => {
+					if let Poll::Pending = Pin::new(timer).poll(cx) {
 						continue;
 					}
 
@@ -1379,17 +1378,8 @@ impl NetworkBehaviour for GenericProto {
 					*peer_state = PeerState::Requested;
 				}
 
-				PeerState::DisabledPendingEnable {
-					mut timer,
-					open,
-					timer_deadline
-				} => {
-					if let Poll::Pending = Pin::new(&mut timer).poll(cx) {
-						*peer_state = PeerState::DisabledPendingEnable {
-							timer,
-							open,
-							timer_deadline
-						};
+				PeerState::DisabledPendingEnable { timer, open, .. } => {
+					if let Poll::Pending = Pin::new(timer).poll(cx) {
 						continue;
 					}
 
@@ -1399,10 +1389,9 @@ impl NetworkBehaviour for GenericProto {
 						handler: NotifyHandler::All,
 						event: NotifsHandlerIn::Enable,
 					});
-					*peer_state = PeerState::Enabled { open };
+					*peer_state = PeerState::Enabled { open: mem::replace(open, Default::default()) };
 				}
-
-				st => *peer_state = st,
+				_ => {},
 			}
 		}
 
-- 
GitLab