diff --git a/libi2pd_client/ClientContext.cpp b/libi2pd_client/ClientContext.cpp index 3f15e41a..dc6616b8 100644 --- a/libi2pd_client/ClientContext.cpp +++ b/libi2pd_client/ClientContext.cpp @@ -27,15 +27,12 @@ namespace client ClientContext context; ClientContext::ClientContext (): m_SharedLocalDestination (nullptr), - m_HttpProxy (nullptr), m_SocksProxy (nullptr), m_SamBridge (nullptr), - m_BOBCommandChannel (nullptr), m_I2CPServer (nullptr) + m_SamBridge (nullptr), m_BOBCommandChannel (nullptr), m_I2CPServer (nullptr) { } ClientContext::~ClientContext () { - delete m_HttpProxy; - delete m_SocksProxy; delete m_SamBridge; delete m_BOBCommandChannel; delete m_I2CPServer; @@ -134,7 +131,6 @@ namespace client { LogPrint(eLogInfo, "Clients: Stopping HTTP Proxy"); m_HttpProxy->Stop(); - delete m_HttpProxy; m_HttpProxy = nullptr; } @@ -142,7 +138,6 @@ namespace client { LogPrint(eLogInfo, "Clients: Stopping SOCKS Proxy"); m_SocksProxy->Stop(); - delete m_SocksProxy; m_SocksProxy = nullptr; } @@ -229,7 +224,6 @@ namespace client if (m_HttpProxy) { m_HttpProxy->Stop (); - delete m_HttpProxy; m_HttpProxy = nullptr; } ReadHttpProxy (); @@ -238,7 +232,6 @@ namespace client if (m_SocksProxy) { m_SocksProxy->Stop (); - delete m_SocksProxy; m_SocksProxy = nullptr; } ReadSocksProxy (); @@ -987,7 +980,7 @@ namespace client } try { - m_HttpProxy = new i2p::proxy::HTTPProxy("HTTP Proxy", httpProxyAddr, httpProxyPort, + m_HttpProxy = std::make_shared("HTTP Proxy", httpProxyAddr, httpProxyPort, httpOutProxyURL, httpAddresshelper, httpSendUserAgent, localDestination); uint64_t closeIdleTime; i2p::config::GetOption("httpproxy.i2cp.closeIdleTime", closeIdleTime); if (closeIdleTime) @@ -1042,7 +1035,7 @@ namespace client } try { - m_SocksProxy = new i2p::proxy::SOCKSProxy("SOCKS", socksProxyAddr, socksProxyPort, + m_SocksProxy = std::make_shared("SOCKS", socksProxyAddr, socksProxyPort, socksOutProxy, socksOutProxyAddr, socksOutProxyPort, localDestination); uint64_t closeIdleTime; i2p::config::GetOption("socksproxy.i2cp.closeIdleTime", closeIdleTime); if (closeIdleTime) diff --git a/libi2pd_client/ClientContext.h b/libi2pd_client/ClientContext.h index 0ca9254c..ed28fe33 100644 --- a/libi2pd_client/ClientContext.h +++ b/libi2pd_client/ClientContext.h @@ -145,7 +145,7 @@ namespace client AddressBook m_AddressBook; - I2PService * m_HttpProxy, * m_SocksProxy; + std::shared_ptr m_HttpProxy, m_SocksProxy; std::map > m_ClientTunnels; // local endpoint -> tunnel std::map, std::shared_ptr > m_ServerTunnels; // -> tunnel @@ -170,8 +170,8 @@ namespace client const decltype(m_ServerTunnels)& GetServerTunnels () const { return m_ServerTunnels; }; const decltype(m_ClientForwards)& GetClientForwards () const { return m_ClientForwards; } const decltype(m_ServerForwards)& GetServerForwards () const { return m_ServerForwards; } - const I2PService * GetHttpProxy () const { return m_HttpProxy; } - const I2PService * GetSocksProxy () const { return m_SocksProxy; } + std::shared_ptr GetHttpProxy () const { return m_HttpProxy; } + std::shared_ptr GetSocksProxy () const { return m_SocksProxy; } }; extern ClientContext context;