Browse Source

spinlock added

pull/668/head
orignal 8 years ago
parent
commit
f17df1f16d
  1. 8
      Identity.cpp

8
Identity.cpp

@ -376,13 +376,16 @@ namespace data
void IdentityEx::UpdateVerifier (i2p::crypto::Verifier * verifier) const void IdentityEx::UpdateVerifier (i2p::crypto::Verifier * verifier) const
{ {
if (!m_Verifier || !verifier) if (!m_Verifier)
{ {
auto created = m_IsVerifierCreated.exchange (true); auto created = m_IsVerifierCreated.exchange (true);
if (!created) if (!created)
m_Verifier.reset (verifier); m_Verifier.reset (verifier);
else else
{
delete verifier; delete verifier;
while (!m_Verifier) ; // spin lock
}
} }
else else
delete verifier; delete verifier;
@ -391,7 +394,8 @@ namespace data
void IdentityEx::DropVerifier () const void IdentityEx::DropVerifier () const
{ {
// TODO: potential race condition with Verify // TODO: potential race condition with Verify
m_Verifier = nullptr; m_IsVerifierCreated = false;
m_Verifier = nullptr;
} }
PrivateKeys& PrivateKeys::operator=(const Keys& keys) PrivateKeys& PrivateKeys::operator=(const Keys& keys)

Loading…
Cancel
Save