1
0
mirror of https://github.com/PurpleI2P/i2pd.git synced 2025-01-22 08:14:15 +00:00

update LeaseSet if a tunnel was deleted

This commit is contained in:
orignal 2018-01-26 14:07:51 -05:00
parent 0957f6b143
commit e1527dc137
2 changed files with 5 additions and 4 deletions

View File

@ -135,7 +135,7 @@ namespace data
}
}
uint64_t LeaseSet::ExtractTimestamp (const uint8_t * buf, size_t len) const
uint64_t LeaseSet::ExtractTimestamp (const uint8_t * buf, size_t len, uint8_t& num) const
{
if (!m_Identity) return 0;
size_t size = m_Identity->GetFullLen ();
@ -143,7 +143,7 @@ namespace data
size += 256; // encryption key
size += m_Identity->GetSigningPublicKeyLen (); // unused signing key
if (size > len) return 0;
uint8_t num = buf[size];
num = buf[size];
size++; // num
if (size + num*LEASE_SIZE > len) return 0;
uint64_t timestamp= 0 ;
@ -160,7 +160,8 @@ namespace data
bool LeaseSet::IsNewer (const uint8_t * buf, size_t len) const
{
return ExtractTimestamp (buf, len) > ExtractTimestamp (m_Buffer, m_BufferLen);
uint8_t num1, num2;
return ExtractTimestamp (buf, len, num2) > ExtractTimestamp (m_Buffer, m_BufferLen, num1) || num2 < num1; // some lease might be deleted
}
bool LeaseSet::ExpiresSoon(const uint64_t dlt, const uint64_t fudge) const

View File

@ -82,7 +82,7 @@ namespace data
private:
void ReadFromBuffer (bool readIdentity = true, bool verifySignature = true);
uint64_t ExtractTimestamp (const uint8_t * buf, size_t len) const; // min expiration time
uint64_t ExtractTimestamp (const uint8_t * buf, size_t len, uint8_t& num) const; // returns max expiration time, num is number of leases
private: