mirror of
https://github.com/LX3JL/xlxd.git
synced 2025-12-06 07:42:01 +01:00
Merge pull request #229 from anonymouspage/cg3protocol-initialize-thread-vars
cg3protocol: fix crash/default initialize std::thread pointers
This commit is contained in:
commit
d14dc22fbf
|
|
@ -79,9 +79,17 @@ bool CG3Protocol::Init(void)
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
// start helper threads
|
// start helper threads
|
||||||
|
try
|
||||||
|
{
|
||||||
m_pPresenceThread = new std::thread(PresenceThread, this);
|
m_pPresenceThread = new std::thread(PresenceThread, this);
|
||||||
m_pPresenceThread = new std::thread(ConfigThread, this);
|
m_pConfigThread = new std::thread(ConfigThread, this);
|
||||||
m_pPresenceThread = new std::thread(IcmpThread, this);
|
m_pIcmpThread = new std::thread(IcmpThread, this);
|
||||||
|
}
|
||||||
|
catch (const std::system_error& e)
|
||||||
|
{
|
||||||
|
ok = false;
|
||||||
|
// ... threads will be cleaned up on the call to ::Close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -94,25 +102,25 @@ bool CG3Protocol::Init(void)
|
||||||
|
|
||||||
void CG3Protocol::Close(void)
|
void CG3Protocol::Close(void)
|
||||||
{
|
{
|
||||||
if (m_pPresenceThread != NULL)
|
if (m_pPresenceThread)
|
||||||
{
|
{
|
||||||
m_pPresenceThread->join();
|
m_pPresenceThread->join();
|
||||||
delete m_pPresenceThread;
|
delete m_pPresenceThread;
|
||||||
m_pPresenceThread = NULL;
|
m_pPresenceThread = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pConfigThread != NULL)
|
if (m_pConfigThread)
|
||||||
{
|
{
|
||||||
m_pConfigThread->join();
|
m_pConfigThread->join();
|
||||||
delete m_pConfigThread;
|
delete m_pConfigThread;
|
||||||
m_pConfigThread = NULL;
|
m_pConfigThread = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_pIcmpThread != NULL)
|
if (m_pIcmpThread)
|
||||||
{
|
{
|
||||||
m_pIcmpThread->join();
|
m_pIcmpThread->join();
|
||||||
delete m_pIcmpThread;
|
delete m_pIcmpThread;
|
||||||
m_pIcmpThread = NULL;
|
m_pIcmpThread = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -600,7 +608,7 @@ bool CG3Protocol::OnDvHeaderPacketIn(CDvHeaderPacket *Header, const CIp &Ip)
|
||||||
// drop if invalid module
|
// drop if invalid module
|
||||||
delete Header;
|
delete Header;
|
||||||
g_Reflector.ReleaseClients();
|
g_Reflector.ReleaseClients();
|
||||||
return NULL;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,13 @@ class CG3Protocol : public CProtocol
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// constructor
|
// constructor
|
||||||
CG3Protocol() : m_GwAddress(0u), m_Modules("*"), m_LastModTime(0) {};
|
CG3Protocol() :
|
||||||
|
m_GwAddress(0u),
|
||||||
|
m_Modules("*"),
|
||||||
|
m_LastModTime(0),
|
||||||
|
m_pPresenceThread(nullptr),
|
||||||
|
m_pConfigThread(nullptr),
|
||||||
|
m_pIcmpThread(nullptr) {}
|
||||||
|
|
||||||
// destructor
|
// destructor
|
||||||
virtual ~CG3Protocol() {};
|
virtual ~CG3Protocol() {};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue