diff --git a/SSU.cpp b/SSU.cpp index 4d5ae9db..12b720df 100644 --- a/SSU.cpp +++ b/SSU.cpp @@ -174,7 +174,7 @@ namespace transport moreBytes = m_Socket.available(); } - m_Service.post (std::bind (&SSUServer::HandleReceivedPackets, this, packets, m_Sessions)); + m_Service.post (std::bind (&SSUServer::HandleReceivedPackets, this, packets, &m_Sessions)); Receive (); } else @@ -201,7 +201,7 @@ namespace transport moreBytes = m_SocketV6.available(); } - m_ServiceV6.post (std::bind (&SSUServer::HandleReceivedPackets, this, packets, m_SessionsV6)); + m_ServiceV6.post (std::bind (&SSUServer::HandleReceivedPackets, this, packets, &m_SessionsV6)); ReceiveV6 (); } else @@ -212,7 +212,7 @@ namespace transport } void SSUServer::HandleReceivedPackets (std::vector packets, - std::map >& sessions) + std::map > * sessions) { std::shared_ptr session; for (auto it1: packets) @@ -223,14 +223,14 @@ namespace transport if (!session || session->GetRemoteEndpoint () != packet->from) // we received packet for other session than previous { if (session) session->FlushData (); - auto it = sessions.find (packet->from); - if (it != sessions.end ()) + auto it = sessions->find (packet->from); + if (it != sessions->end ()) session = it->second; if (!session) { session = std::make_shared (*this, packet->from); session->WaitForConnect (); - sessions[packet->from] = session; + (*sessions)[packet->from] = session; LogPrint (eLogInfo, "New SSU session from ", packet->from.address ().to_string (), ":", packet->from.port (), " created"); } } diff --git a/SSU.h b/SSU.h index fc01644f..8f9bec77 100644 --- a/SSU.h +++ b/SSU.h @@ -70,7 +70,7 @@ namespace transport void HandleReceivedFrom (const boost::system::error_code& ecode, std::size_t bytes_transferred, SSUPacket * packet); void HandleReceivedFromV6 (const boost::system::error_code& ecode, std::size_t bytes_transferred, SSUPacket * packet); void HandleReceivedPackets (std::vector packets, - std::map >& sessions); + std::map >* sessions); void CreateSessionThroughIntroducer (std::shared_ptr router, bool peerTest = false); void CreateDirectSession (std::shared_ptr router, boost::asio::ip::udp::endpoint remoteEndpoint, bool peerTest);