diff --git a/Identity.cpp b/Identity.cpp index c7c3ed0e..5a59e26e 100644 --- a/Identity.cpp +++ b/Identity.cpp @@ -40,6 +40,12 @@ namespace data return *this; } + bool IdentHash::FromBase32(const std::string& s) + { + size_t count = Base32ToByteStream(s.c_str(), s.length(), m_Hash, sizeof(m_Hash)); + return count == sizeof(m_Hash); + } + Keys CreateRandomKeys () { Keys keys; diff --git a/Identity.h b/Identity.h index ff35a7db..be9ae901 100644 --- a/Identity.h +++ b/Identity.h @@ -73,7 +73,9 @@ namespace data bool operator== (const IdentHash& other) const { return !memcmp (m_Hash, other.m_Hash, 32); }; bool operator< (const IdentHash& other) const { return memcmp (m_Hash, other.m_Hash, 32) < 0; }; - + + bool FromBase32(const std::string&); + private: uint8_t m_Hash[32]; @@ -106,7 +108,7 @@ namespace data public: RoutingDestination (): m_ElGamalEncryption (nullptr) {}; - virtual ~RoutingDestination () { if (m_ElGamalEncryption) delete m_ElGamalEncryption; }; + virtual ~RoutingDestination () { delete m_ElGamalEncryption; }; virtual const IdentHash& GetIdentHash () const = 0; virtual const uint8_t * GetEncryptionPublicKey () const = 0; diff --git a/Streaming.cpp b/Streaming.cpp index 9a23c313..b338c8c6 100644 --- a/Streaming.cpp +++ b/Streaming.cpp @@ -283,11 +283,11 @@ namespace stream bool Stream::SendPacket (const uint8_t * buf, size_t len) { const I2NPMessage * leaseSet = nullptr; - if (m_LeaseSetUpdated) - { - leaseSet = m_LocalDestination->GetLeaseSet (); - m_LeaseSetUpdated = false; - } + + leaseSet = m_LocalDestination->GetLeaseSet (); + if (!leaseSet) + return false; + I2NPMessage * msg = i2p::garlic::routing.WrapMessage (m_RemoteLeaseSet, CreateDataMessage (this, buf, len), leaseSet); if (!m_OutboundTunnel || m_OutboundTunnel->IsFailed ()) diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt index 5541301f..ac114a45 100644 --- a/build/CMakeLists.txt +++ b/build/CMakeLists.txt @@ -21,6 +21,7 @@ set ( SOURCES NTCPSession.cpp RouterContext.cpp SSU.cpp + SSUData.cpp TransitTunnel.cpp Tunnel.cpp TunnelGateway.cpp @@ -37,6 +38,7 @@ set ( SOURCES TunnelEndpoint.cpp TunnelPool.cpp util.cpp + Daemon.cpp ) set ( HEADERS @@ -48,6 +50,7 @@ set ( HEADERS NTCPSession.h RouterContext.h SSU.h + SSUData.h TransitTunnel.h Tunnel.h TunnelGateway.h @@ -64,8 +67,17 @@ set ( HEADERS TunnelEndpoint.h TunnelPool.h util.h + Daemon.h ) +if (WIN32) + list (APPEND SOURCES DeamonWin32.cpp) +else () + list (APPEND SOURCES DaemonLinux.cpp) +endif () + + + source_group ("Header Files" FILES ${HEADERS}) source_group ("Source Files" FILES ${SOURCES})