From 1c3f70056a27eea83f99568fec7cf2b210544800 Mon Sep 17 00:00:00 2001 From: orignal Date: Fri, 21 Nov 2014 12:34:17 -0500 Subject: [PATCH] use shared pointer of RI for transports --- NTCPSession.cpp | 6 +++--- NTCPSession.h | 4 ++-- SSU.cpp | 6 +++--- SSU.h | 6 +++--- SSUSession.cpp | 2 +- SSUSession.h | 2 +- TransportSession.h | 7 ++++--- Transports.cpp | 6 +++--- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/NTCPSession.cpp b/NTCPSession.cpp index d64ffedb..064290c5 100644 --- a/NTCPSession.cpp +++ b/NTCPSession.cpp @@ -19,7 +19,7 @@ namespace i2p { namespace transport { - NTCPSession::NTCPSession (boost::asio::io_service& service, const i2p::data::RouterInfo * in_RemoteRouter): + NTCPSession::NTCPSession (boost::asio::io_service& service, std::shared_ptr in_RemoteRouter): TransportSession (in_RemoteRouter), m_Socket (service), m_TerminationTimer (service), m_IsEstablished (false), m_ReceiveBufferOffset (0), m_NextMessage (nullptr), m_NumSentBytes (0), m_NumReceivedBytes (0) @@ -597,8 +597,8 @@ namespace transport NTCPClient::NTCPClient (boost::asio::io_service& service, const boost::asio::ip::address& address, - int port, const i2p::data::RouterInfo& in_RouterInfo): - NTCPSession (service, &in_RouterInfo), m_Endpoint (address, port) + int port, std::shared_ptr in_RouterInfo): + NTCPSession (service, in_RouterInfo), m_Endpoint (address, port) { Connect (); } diff --git a/NTCPSession.h b/NTCPSession.h index 0edff7fc..5417b380 100644 --- a/NTCPSession.h +++ b/NTCPSession.h @@ -62,7 +62,7 @@ namespace transport { public: - NTCPSession (boost::asio::io_service& service, const i2p::data::RouterInfo * in_RemoteRouter = nullptr); + NTCPSession (boost::asio::io_service& service, std::shared_ptr in_RemoteRouter = nullptr); ~NTCPSession (); boost::asio::ip::tcp::socket& GetSocket () { return m_Socket; }; @@ -146,7 +146,7 @@ namespace transport { public: - NTCPClient (boost::asio::io_service& service, const boost::asio::ip::address& address, int port, const i2p::data::RouterInfo& in_RouterInfo); + NTCPClient (boost::asio::io_service& service, const boost::asio::ip::address& address, int port, std::shared_ptr in_RouterInfo); private: diff --git a/SSU.cpp b/SSU.cpp index b365e1fb..fe625fb6 100644 --- a/SSU.cpp +++ b/SSU.cpp @@ -141,7 +141,7 @@ namespace transport session->ProcessNextMessage (buf, bytes_transferred, from); } - SSUSession * SSUServer::FindSession (const i2p::data::RouterInfo * router) + SSUSession * SSUServer::FindSession (const i2p::data::RouterInfo * router) const { if (!router) return nullptr; auto address = router->GetSSUAddress (true); // v4 only @@ -155,7 +155,7 @@ namespace transport return FindSession (boost::asio::ip::udp::endpoint (address->host, address->port)); } - SSUSession * SSUServer::FindSession (const boost::asio::ip::udp::endpoint& e) + SSUSession * SSUServer::FindSession (const boost::asio::ip::udp::endpoint& e) const { auto it = m_Sessions.find (e); if (it != m_Sessions.end ()) @@ -164,7 +164,7 @@ namespace transport return nullptr; } - SSUSession * SSUServer::GetSession (const i2p::data::RouterInfo * router, bool peerTest) + SSUSession * SSUServer::GetSession (std::shared_ptr router, bool peerTest) { SSUSession * session = nullptr; if (router) diff --git a/SSU.h b/SSU.h index b9a3e64f..2edd9e35 100644 --- a/SSU.h +++ b/SSU.h @@ -31,9 +31,9 @@ namespace transport ~SSUServer (); void Start (); void Stop (); - SSUSession * GetSession (const i2p::data::RouterInfo * router, bool peerTest = false); - SSUSession * FindSession (const i2p::data::RouterInfo * router); - SSUSession * FindSession (const boost::asio::ip::udp::endpoint& e); + SSUSession * GetSession (std::shared_ptr router, bool peerTest = false); + SSUSession * FindSession (const i2p::data::RouterInfo * router) const; + SSUSession * FindSession (const boost::asio::ip::udp::endpoint& e) const; SSUSession * GetRandomEstablishedSession (const SSUSession * excluded); void DeleteSession (SSUSession * session); void DeleteAllSessions (); diff --git a/SSUSession.cpp b/SSUSession.cpp index 91b4e947..7a1e9b06 100644 --- a/SSUSession.cpp +++ b/SSUSession.cpp @@ -14,7 +14,7 @@ namespace i2p namespace transport { SSUSession::SSUSession (SSUServer& server, boost::asio::ip::udp::endpoint& remoteEndpoint, - const i2p::data::RouterInfo * router, bool peerTest ): TransportSession (router), + std::shared_ptr router, bool peerTest ): TransportSession (router), m_Server (server), m_RemoteEndpoint (remoteEndpoint), m_Timer (m_Server.GetService ()), m_PeerTest (peerTest), m_State (eSessionStateUnknown), m_IsSessionKey (false), m_RelayTag (0), diff --git a/SSUSession.h b/SSUSession.h index fc1600d8..4ae7a74a 100644 --- a/SSUSession.h +++ b/SSUSession.h @@ -55,7 +55,7 @@ namespace transport public: SSUSession (SSUServer& server, boost::asio::ip::udp::endpoint& remoteEndpoint, - const i2p::data::RouterInfo * router = nullptr, bool peerTest = false); + std::shared_ptr router = nullptr, bool peerTest = false); void ProcessNextMessage (uint8_t * buf, size_t len, const boost::asio::ip::udp::endpoint& senderEndpoint); ~SSUSession (); diff --git a/TransportSession.h b/TransportSession.h index 0293686c..f4079590 100644 --- a/TransportSession.h +++ b/TransportSession.h @@ -3,6 +3,7 @@ #include #include +#include #include "Identity.h" #include "RouterInfo.h" @@ -51,7 +52,7 @@ namespace transport { public: - TransportSession (const i2p::data::RouterInfo * in_RemoteRouter): + TransportSession (std::shared_ptr in_RemoteRouter): m_RemoteRouter (in_RemoteRouter), m_DHKeysPair (nullptr) { if (m_RemoteRouter) @@ -60,12 +61,12 @@ namespace transport virtual ~TransportSession () { delete m_DHKeysPair; }; - const i2p::data::RouterInfo * GetRemoteRouter () { return m_RemoteRouter; }; + std::shared_ptr GetRemoteRouter () { return m_RemoteRouter; }; const i2p::data::IdentityEx& GetRemoteIdentity () { return m_RemoteIdentity; }; protected: - const i2p::data::RouterInfo * m_RemoteRouter; + std::shared_ptr m_RemoteRouter; i2p::data::IdentityEx m_RemoteIdentity; DHKeysPair * m_DHKeysPair; // X - for client and Y - for server }; diff --git a/Transports.cpp b/Transports.cpp index 044752a7..42feb507 100644 --- a/Transports.cpp +++ b/Transports.cpp @@ -290,14 +290,14 @@ namespace transport auto address = r->GetNTCPAddress (!context.SupportsV6 ()); if (address && !r->UsesIntroducer () && !r->IsUnreachable () && msg->GetLength () < NTCP_MAX_MESSAGE_SIZE) { - auto s = new NTCPClient (m_Service, address->host, address->port, *r); + auto s = new NTCPClient (m_Service, address->host, address->port, r); AddNTCPSession (s); s->SendI2NPMessage (msg); } else { // then SSU - auto s = m_SSUServer ? m_SSUServer->GetSession (r.get ()) : nullptr; + auto s = m_SSUServer ? m_SSUServer->GetSession (r) : nullptr; if (s) s->SendI2NPMessage (msg); else @@ -360,7 +360,7 @@ namespace transport { auto router = i2p::data::netdb.GetRandomRouter (); if (router && router->IsSSU () && m_SSUServer) - m_SSUServer->GetSession (router.get (), true); // peer test + m_SSUServer->GetSession (router, true); // peer test } }