@@ -343,38 +343,38 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, unique_ptr<RLPXF
343343 LOG (m_logger) << " p2p.host.peer.register " << _id;
344344}
345345
346- void Host::onNodeTableEvent (NodeID const & _n , NodeTableEventType const & _e)
346+ void Host::onNodeTableEvent (NodeID const & _nodeID , NodeTableEventType const & _e)
347347{
348348 if (_e == NodeEntryAdded)
349349 {
350- LOG (m_logger) << " p2p.host.nodeTable.events.nodeEntryAdded " << _n ;
351- if (Node n = nodeFromNodeTable (_n ))
350+ LOG (m_logger) << " p2p.host.nodeTable.events.nodeEntryAdded " << _nodeID ;
351+ if (Node node = nodeFromNodeTable (_nodeID ))
352352 {
353- shared_ptr<Peer> p ;
353+ shared_ptr<Peer> peer ;
354354 DEV_RECURSIVE_GUARDED (x_sessions)
355355 {
356- if (m_peers.count (_n))
357- {
358- p = m_peers[_n];
359- p->endpoint = n.endpoint ;
360- }
356+ auto const itPeer = m_peers.find (_nodeID);
357+ if (itPeer != m_peers.end () &&
358+ itPeer->second ->endpoint .address () == node.endpoint .address ())
359+ peer = itPeer->second ;
361360 else
362361 {
363- p = make_shared<Peer>(n);
364- m_peers[_n] = p;
365- LOG (m_logger) << " p2p.host.peers.events.peerAdded " << _n << " " << p->endpoint ;
362+ peer = make_shared<Peer>(node);
363+ m_peers[_nodeID] = peer;
364+ LOG (m_logger) << " p2p.host.peers.events.peerAdded " << _nodeID << " "
365+ << peer->endpoint ;
366366 }
367367 }
368368 if (peerSlotsAvailable (Egress))
369- connect (p );
369+ connect (peer );
370370 }
371371 }
372372 else if (_e == NodeEntryDropped)
373373 {
374- LOG (m_logger) << " p2p.host.nodeTable.events.NodeEntryDropped " << _n ;
374+ LOG (m_logger) << " p2p.host.nodeTable.events.NodeEntryDropped " << _nodeID ;
375375 RecursiveGuard l (x_sessions);
376- if (m_peers.count (_n ) && m_peers[_n ]->peerType == PeerType::Optional)
377- m_peers.erase (_n );
376+ if (m_peers.count (_nodeID ) && m_peers[_nodeID ]->peerType == PeerType::Optional)
377+ m_peers.erase (_nodeID );
378378 }
379379}
380380
@@ -535,52 +535,54 @@ void Host::addNode(NodeID const& _node, NodeIPEndpoint const& _endpoint)
535535 addNodeToNodeTable (Node (_node, _endpoint));
536536}
537537
538- void Host::requirePeer (NodeID const & _n , NodeIPEndpoint const & _endpoint)
538+ void Host::requirePeer (NodeID const & _nodeID , NodeIPEndpoint const & _endpoint)
539539{
540540 {
541541 Guard l (x_requiredPeers);
542- m_requiredPeers.insert (_n );
542+ m_requiredPeers.insert (_nodeID );
543543 }
544544
545545 if (!m_run)
546546 return ;
547-
548- if (_n == id ())
547+
548+ if (_nodeID == id ())
549549 {
550- cnetdetails << " Ingoring the request to connect to self " << _n ;
550+ cnetdetails << " Ingoring the request to connect to self " << _nodeID ;
551551 return ;
552552 }
553553
554- Node node (_n , _endpoint, PeerType::Required);
555- if (_n )
554+ Node node (_nodeID , _endpoint, PeerType::Required);
555+ if (_nodeID )
556556 {
557557 // create or update m_peers entry
558- shared_ptr<Peer> p ;
558+ shared_ptr<Peer> peer ;
559559 DEV_RECURSIVE_GUARDED (x_sessions)
560- if (m_peers.count (_n))
560+ {
561+ auto const itPeer = m_peers.find (_nodeID);
562+ if (itPeer != m_peers.end () &&
563+ itPeer->second ->endpoint .address () == node.endpoint .address ())
561564 {
562- p = m_peers[_n];
563- p->endpoint = node.endpoint ;
564- p->peerType = PeerType::Required;
565+ peer = itPeer->second ;
566+ peer->peerType = PeerType::Required;
565567 }
566568 else
567569 {
568- p = make_shared<Peer>(node);
569- m_peers[_n ] = p ;
570+ peer = make_shared<Peer>(node);
571+ m_peers[_nodeID ] = peer ;
570572 }
573+ }
571574 // required for discovery
572- addNodeToNodeTable (*p , NodeTable::NodeRelation::Unknown);
575+ addNodeToNodeTable (*peer , NodeTable::NodeRelation::Unknown);
573576 }
574577 else
575578 {
576579 if (!addNodeToNodeTable (node))
577580 return ;
578581 auto t = make_shared<boost::asio::deadline_timer>(m_ioService);
579582 t->expires_from_now (boost::posix_time::milliseconds (600 ));
580- t->async_wait ([this , _n](boost::system::error_code const & _ec)
581- {
583+ t->async_wait ([this , _nodeID](boost::system::error_code const & _ec) {
582584 if (!_ec)
583- if (auto n = nodeFromNodeTable (_n ))
585+ if (auto n = nodeFromNodeTable (_nodeID ))
584586 requirePeer (n.id , n.endpoint );
585587 });
586588 DEV_GUARDED (x_timers)
0 commit comments