From d203bf6d58af4f96dfa9f1681de4a931636356a9 Mon Sep 17 00:00:00 2001 From: subtly Date: Sat, 4 Apr 2015 22:13:10 +0200 Subject: [PATCH] Thread-safe cap initiliazation. --- libp2p/Host.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 563e92da4..e4538a75e 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -219,16 +219,19 @@ void Host::startPeerSession(Public const& _id, RLP const& _rlp, RLPXFrameIO* _io ps->disconnect(DuplicatePeer); return; } + + // todo: mutex Session::m_capabilities and move for(:caps) out of mutex. + unsigned o = (unsigned)UserPacket; + for (auto const& i: caps) + if (haveCapability(i)) + { + ps->m_capabilities[i] = shared_ptr(m_capabilities[i]->newPeerCapability(ps.get(), o)); + o += m_capabilities[i]->messageCount(); + } + ps->start(); m_sessions[_id] = ps; } - unsigned o = (unsigned)UserPacket; - for (auto const& i: caps) - if (haveCapability(i)) - { - ps->m_capabilities[i] = shared_ptr(m_capabilities[i]->newPeerCapability(ps.get(), o)); - o += m_capabilities[i]->messageCount(); - } - ps->start(); + clog(NetNote) << "p2p.host.peer.register" << _id.abridged(); StructuredLogger::p2pConnected(_id.abridged(), ps->m_peer->peerEndpoint(), ps->m_peer->m_lastConnected, clientVersion, peerCount()); }