From 8a12b710104792df1bf05964435aaebbcec265ee Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 14 Oct 2014 14:48:25 -0400 Subject: [PATCH] unconfirmed tags --- Garlic.cpp | 12 ++++++++++++ Garlic.h | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Garlic.cpp b/Garlic.cpp index 8d96367a..4d29aeb7 100644 --- a/Garlic.cpp +++ b/Garlic.cpp @@ -45,6 +45,9 @@ namespace garlic GarlicRoutingSession::~GarlicRoutingSession () { + for (auto it: m_UnconfirmedTagsMsgs) + delete it.second; + m_UnconfirmedTagsMsgs.clear (); delete[] m_SessionTags; } @@ -59,6 +62,15 @@ namespace garlic } } + void GarlicRoutingSession::TagsConfirmed (uint32_t msgID) + { + auto it = m_UnconfirmedTagsMsgs.find (msgID); + if (it != m_UnconfirmedTagsMsgs.end ()) + { + } + m_IsAcknowledged = true; + } + I2NPMessage * GarlicRoutingSession::WrapSingleMessage (I2NPMessage * msg) { I2NPMessage * m = NewI2NPMessage (); diff --git a/Garlic.h b/Garlic.h index ea6629c4..450eae62 100644 --- a/Garlic.h +++ b/Garlic.h @@ -43,6 +43,15 @@ namespace garlic class GarlicDestination; class GarlicRoutingSession { + struct UnconfirmedTags + { + UnconfirmedTags (int n): numTags (n), tagsCreationTime (0) { sessionTags = new SessionTag[numTags]; }; + ~UnconfirmedTags () { delete[] sessionTags; }; + int numTags; + SessionTag * sessionTags; + uint32_t tagsCreationTime; + }; + public: GarlicRoutingSession (GarlicDestination * owner, const i2p::data::RoutingDestination * destination, int numTags); @@ -50,7 +59,7 @@ namespace garlic ~GarlicRoutingSession (); I2NPMessage * WrapSingleMessage (I2NPMessage * msg); int GetNextTag () const { return m_NextTag; }; - void TagsConfirmed (uint32_t msgID) { m_IsAcknowledged = true; }; + void TagsConfirmed (uint32_t msgID); void SetLeaseSetUpdated () { m_LeaseSetUpdated = true; }; @@ -71,7 +80,8 @@ namespace garlic bool m_IsAcknowledged; int m_NumTags, m_NextTag; SessionTag * m_SessionTags; // m_NumTags*32 bytes - uint32_t m_TagsCreationTime; // seconds since epoch + uint32_t m_TagsCreationTime; // seconds since epoch + std::map m_UnconfirmedTagsMsgs; bool m_LeaseSetUpdated; i2p::crypto::CBCEncryption m_Encryption;