diff --git a/daemon/HTTPServer.cpp b/daemon/HTTPServer.cpp
index f78057b3..e42efb36 100644
--- a/daemon/HTTPServer.cpp
+++ b/daemon/HTTPServer.cpp
@@ -625,7 +625,10 @@ namespace http {
if (storeType == i2p::data::NETDB_STORE_TYPE_LEASESET)
ls.reset (new i2p::data::LeaseSet (leaseSet->GetBuffer(), leaseSet->GetBufferLen()));
else
- ls.reset (new i2p::data::LeaseSet2 (storeType, leaseSet->GetBuffer(), leaseSet->GetBufferLen()));
+ {
+ ls.reset (new i2p::data::LeaseSet2 (storeType));
+ ls->Update (leaseSet->GetBuffer(), leaseSet->GetBufferLen(), false);
+ }
if (!ls) return;
s << "
IsExpired())
diff --git a/libi2pd/LeaseSet.cpp b/libi2pd/LeaseSet.cpp
index d23fdcb8..8ccfa771 100644
--- a/libi2pd/LeaseSet.cpp
+++ b/libi2pd/LeaseSet.cpp
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2013-2022, The PurpleI2P Project
+* Copyright (c) 2013-2023, The PurpleI2P Project
*
* This file is part of Purple i2pd project and licensed under BSD3
*
@@ -315,7 +315,7 @@ namespace data
{
// standard LS2 header
std::shared_ptr identity;
- if (readIdentity)
+ if (readIdentity || !GetIdentity ())
{
identity = std::make_shared(buf, len);
SetIdentity (identity);
diff --git a/libi2pd/LeaseSet.h b/libi2pd/LeaseSet.h
index a79a5870..566c4655 100644
--- a/libi2pd/LeaseSet.h
+++ b/libi2pd/LeaseSet.h
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2013-2021, The PurpleI2P Project
+* Copyright (c) 2013-2023, The PurpleI2P Project
*
* This file is part of Purple i2pd project and licensed under BSD3
*
@@ -145,6 +145,7 @@ namespace data
{
public:
+ LeaseSet2 (uint8_t storeType): LeaseSet (true), m_StoreType (storeType) {}; // for update
LeaseSet2 (uint8_t storeType, const uint8_t * buf, size_t len, bool storeLeases = true, CryptoKeyType preferredCrypto = CRYPTO_KEY_TYPE_ELGAMAL);
LeaseSet2 (const uint8_t * buf, size_t len, std::shared_ptr key, const uint8_t * secret = nullptr, CryptoKeyType preferredCrypto = CRYPTO_KEY_TYPE_ELGAMAL); // store type 5, called from local netdb only
uint8_t GetStoreType () const { return m_StoreType; };