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)
|
||||
{
|
||||
// start helper threads
|
||||
m_pPresenceThread = new std::thread(PresenceThread, this);
|
||||
m_pPresenceThread = new std::thread(ConfigThread, this);
|
||||
m_pPresenceThread = new std::thread(IcmpThread, this);
|
||||
try
|
||||
{
|
||||
m_pPresenceThread = new std::thread(PresenceThread, this);
|
||||
m_pConfigThread = new std::thread(ConfigThread, 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
|
||||
|
||||
|
|
@ -94,25 +102,25 @@ bool CG3Protocol::Init(void)
|
|||
|
||||
void CG3Protocol::Close(void)
|
||||
{
|
||||
if (m_pPresenceThread != NULL)
|
||||
if (m_pPresenceThread)
|
||||
{
|
||||
m_pPresenceThread->join();
|
||||
delete m_pPresenceThread;
|
||||
m_pPresenceThread = NULL;
|
||||
m_pPresenceThread = nullptr;
|
||||
}
|
||||
|
||||
if (m_pConfigThread != NULL)
|
||||
if (m_pConfigThread)
|
||||
{
|
||||
m_pConfigThread->join();
|
||||
delete m_pConfigThread;
|
||||
m_pConfigThread = NULL;
|
||||
m_pConfigThread = nullptr;
|
||||
}
|
||||
|
||||
if (m_pIcmpThread != NULL)
|
||||
if (m_pIcmpThread)
|
||||
{
|
||||
m_pIcmpThread->join();
|
||||
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
|
||||
delete Header;
|
||||
g_Reflector.ReleaseClients();
|
||||
return NULL;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,13 @@ class CG3Protocol : public CProtocol
|
|||
{
|
||||
public:
|
||||
// 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
|
||||
virtual ~CG3Protocol() {};
|
||||
|
|
|
|||
Loading…
Reference in a new issue