mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-31 13:14:13 +00:00
fixed race condition in ECIESx25519 tags table
This commit is contained in:
parent
828facab57
commit
2ad26dd4c9
@ -1199,7 +1199,27 @@ namespace i2p
|
|||||||
else
|
else
|
||||||
i2p::garlic::GarlicDestination::ProcessDeliveryStatusMessage (msg);
|
i2p::garlic::GarlicDestination::ProcessDeliveryStatusMessage (msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RouterContext::SubmitECIESx25519Key (const uint8_t * key, uint64_t tag)
|
||||||
|
{
|
||||||
|
if (m_Service)
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint8_t k[32];
|
||||||
|
uint64_t t;
|
||||||
|
} data;
|
||||||
|
memcpy (data.k, key, 32);
|
||||||
|
data.t = tag;
|
||||||
|
m_Service->GetService ().post ([this,data](void)
|
||||||
|
{
|
||||||
|
AddECIESx25519Key (data.k, data.t);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint (eLogError, "Router: service is NULL");
|
||||||
|
}
|
||||||
|
|
||||||
void RouterContext::CleanupDestination ()
|
void RouterContext::CleanupDestination ()
|
||||||
{
|
{
|
||||||
if (m_Service)
|
if (m_Service)
|
||||||
|
@ -136,6 +136,7 @@ namespace garlic
|
|||||||
void SetNetID (int netID) { m_NetID = netID; };
|
void SetNetID (int netID) { m_NetID = netID; };
|
||||||
bool DecryptTunnelBuildRecord (const uint8_t * encrypted, uint8_t * data);
|
bool DecryptTunnelBuildRecord (const uint8_t * encrypted, uint8_t * data);
|
||||||
bool DecryptTunnelShortRequestRecord (const uint8_t * encrypted, uint8_t * data);
|
bool DecryptTunnelShortRequestRecord (const uint8_t * encrypted, uint8_t * data);
|
||||||
|
void SubmitECIESx25519Key (const uint8_t * key, uint64_t tag);
|
||||||
|
|
||||||
void UpdatePort (int port); // called from Daemon
|
void UpdatePort (int port); // called from Daemon
|
||||||
void UpdateAddress (const boost::asio::ip::address& host); // called from SSU2 or Daemon
|
void UpdateAddress (const boost::asio::ip::address& host); // called from SSU2 or Daemon
|
||||||
|
@ -116,7 +116,7 @@ namespace tunnel
|
|||||||
if (m_Pool && m_Pool->GetLocalDestination ())
|
if (m_Pool && m_Pool->GetLocalDestination ())
|
||||||
m_Pool->GetLocalDestination ()->SubmitECIESx25519Key (key, tag);
|
m_Pool->GetLocalDestination ()->SubmitECIESx25519Key (key, tag);
|
||||||
else
|
else
|
||||||
i2p::context.AddECIESx25519Key (key, tag);
|
i2p::context.SubmitECIESx25519Key (key, tag);
|
||||||
}
|
}
|
||||||
i2p::transport::transports.SendMessage (GetNextIdentHash (), msg);
|
i2p::transport::transports.SendMessage (GetNextIdentHash (), msg);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user