mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-24 01:46:36 +02:00
handle termination block
This commit is contained in:
parent
d7d70b707f
commit
c4d9c03930
4 changed files with 30 additions and 13 deletions
|
@ -223,16 +223,8 @@ namespace garlic
|
||||||
switch (blk)
|
switch (blk)
|
||||||
{
|
{
|
||||||
case eECIESx25519BlkGalicClove:
|
case eECIESx25519BlkGalicClove:
|
||||||
GetOwner ()->HandleECIESx25519GarlicClove (buf + offset, size);
|
if (GetOwner ())
|
||||||
break;
|
GetOwner ()->HandleECIESx25519GarlicClove (buf + offset, size);
|
||||||
case eECIESx25519BlkDateTime:
|
|
||||||
LogPrint (eLogDebug, "Garlic: datetime");
|
|
||||||
break;
|
|
||||||
case eECIESx25519BlkOptions:
|
|
||||||
LogPrint (eLogDebug, "Garlic: options");
|
|
||||||
break;
|
|
||||||
case eECIESx25519BlkPadding:
|
|
||||||
LogPrint (eLogDebug, "Garlic: padding");
|
|
||||||
break;
|
break;
|
||||||
case eECIESx25519BlkNextKey:
|
case eECIESx25519BlkNextKey:
|
||||||
LogPrint (eLogDebug, "Garlic: next key");
|
LogPrint (eLogDebug, "Garlic: next key");
|
||||||
|
@ -256,6 +248,21 @@ namespace garlic
|
||||||
m_AckRequests.push_back ({receiveTagset->GetTagSetID (), index});
|
m_AckRequests.push_back ({receiveTagset->GetTagSetID (), index});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case eECIESx25519BlkTermination:
|
||||||
|
LogPrint (eLogDebug, "Garlic: termination");
|
||||||
|
if (GetOwner ())
|
||||||
|
GetOwner ()->RemoveECIESx25519Session (m_RemoteStaticKey);
|
||||||
|
if (receiveTagset) receiveTagset->Expire ();
|
||||||
|
break;
|
||||||
|
case eECIESx25519BlkDateTime:
|
||||||
|
LogPrint (eLogDebug, "Garlic: datetime");
|
||||||
|
break;
|
||||||
|
case eECIESx25519BlkOptions:
|
||||||
|
LogPrint (eLogDebug, "Garlic: options");
|
||||||
|
break;
|
||||||
|
case eECIESx25519BlkPadding:
|
||||||
|
LogPrint (eLogDebug, "Garlic: padding");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
LogPrint (eLogWarning, "Garlic: Unknown block type ", (int)blk);
|
LogPrint (eLogWarning, "Garlic: Unknown block type ", (int)blk);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ namespace garlic
|
||||||
const int ECIESX25519_EXPIRATION_TIMEOUT = 480; // in seconds
|
const int ECIESX25519_EXPIRATION_TIMEOUT = 480; // in seconds
|
||||||
const int ECIESX25519_INCOMING_TAGS_EXPIRATION_TIMEOUT = 600; // in seconds
|
const int ECIESX25519_INCOMING_TAGS_EXPIRATION_TIMEOUT = 600; // in seconds
|
||||||
const int ECIESX25519_PREVIOUS_TAGSET_EXPIRATION_TIMEOUT = 180; // 180
|
const int ECIESX25519_PREVIOUS_TAGSET_EXPIRATION_TIMEOUT = 180; // 180
|
||||||
const int ECIESX25519_TAGSET_MAX_NUM_TAGS = 1024; // number of tags we request new tagset after
|
const int ECIESX25519_TAGSET_MAX_NUM_TAGS = 4096; // number of tags we request new tagset after
|
||||||
const int ECIESX25519_MIN_NUM_GENERATED_TAGS = 24;
|
const int ECIESX25519_MIN_NUM_GENERATED_TAGS = 24;
|
||||||
const int ECIESX25519_MAX_NUM_GENERATED_TAGS = 160;
|
const int ECIESX25519_MAX_NUM_GENERATED_TAGS = 160;
|
||||||
const int ECIESX25519_NSR_NUM_GENERATED_TAGS = 12;
|
const int ECIESX25519_NSR_NUM_GENERATED_TAGS = 12;
|
||||||
|
|
|
@ -1013,5 +1013,14 @@ namespace garlic
|
||||||
m_ECIESx25519Sessions.emplace (staticKeyTag, session);
|
m_ECIESx25519Sessions.emplace (staticKeyTag, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GarlicDestination::RemoveECIESx25519Session (const uint8_t * staticKey)
|
||||||
|
{
|
||||||
|
auto it = m_ECIESx25519Sessions.find (staticKey);
|
||||||
|
if (it != m_ECIESx25519Sessions.end ())
|
||||||
|
{
|
||||||
|
it->second->SetOwner (nullptr);
|
||||||
|
m_ECIESx25519Sessions.erase (it);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,6 +233,7 @@ namespace garlic
|
||||||
void DeliveryStatusSent (GarlicRoutingSessionPtr session, uint32_t msgID);
|
void DeliveryStatusSent (GarlicRoutingSessionPtr session, uint32_t msgID);
|
||||||
void AddECIESx25519SessionNextTag (RatchetTagSetPtr tagset);
|
void AddECIESx25519SessionNextTag (RatchetTagSetPtr tagset);
|
||||||
void AddECIESx25519Session (const uint8_t * staticKey, ECIESX25519AEADRatchetSessionPtr session);
|
void AddECIESx25519Session (const uint8_t * staticKey, ECIESX25519AEADRatchetSessionPtr session);
|
||||||
|
void RemoveECIESx25519Session (const uint8_t * staticKey);
|
||||||
void HandleECIESx25519GarlicClove (const uint8_t * buf, size_t len);
|
void HandleECIESx25519GarlicClove (const uint8_t * buf, size_t len);
|
||||||
|
|
||||||
virtual void ProcessGarlicMessage (std::shared_ptr<I2NPMessage> msg);
|
virtual void ProcessGarlicMessage (std::shared_ptr<I2NPMessage> msg);
|
||||||
|
|
Loading…
Add table
Reference in a new issue