mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-04-18 23:16:37 +02:00
fixed race condition
This commit is contained in:
parent
729cc4330e
commit
41974b8c75
2 changed files with 30 additions and 24 deletions
|
@ -85,15 +85,21 @@ namespace client
|
|||
|
||||
void ClientDestination::Start ()
|
||||
{
|
||||
if (!m_IsRunning)
|
||||
{
|
||||
m_IsRunning = true;
|
||||
m_Pool->SetLocalDestination (this);
|
||||
m_Pool->SetActive (true);
|
||||
m_IsRunning = true;
|
||||
m_Thread = new std::thread (std::bind (&ClientDestination::Run, this));
|
||||
m_StreamingDestination->Start ();
|
||||
}
|
||||
}
|
||||
|
||||
void ClientDestination::Stop ()
|
||||
{
|
||||
if (m_IsRunning)
|
||||
{
|
||||
m_IsRunning = false;
|
||||
m_StreamingDestination->Stop ();
|
||||
if (m_DatagramDestination)
|
||||
{
|
||||
|
@ -106,7 +112,6 @@ namespace client
|
|||
m_Pool->SetLocalDestination (nullptr);
|
||||
i2p::tunnel::tunnels.StopTunnelPool (m_Pool);
|
||||
}
|
||||
m_IsRunning = false;
|
||||
m_Service.stop ();
|
||||
if (m_Thread)
|
||||
{
|
||||
|
@ -115,6 +120,7 @@ namespace client
|
|||
m_Thread = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const i2p::data::LeaseSet * ClientDestination::FindLeaseSet (const i2p::data::IdentHash& ident)
|
||||
{
|
||||
|
|
|
@ -112,7 +112,7 @@ namespace client
|
|||
|
||||
private:
|
||||
|
||||
bool m_IsRunning;
|
||||
volatile bool m_IsRunning;
|
||||
std::thread * m_Thread;
|
||||
boost::asio::io_service m_Service;
|
||||
boost::asio::io_service::work m_Work;
|
||||
|
|
Loading…
Add table
Reference in a new issue