fix issue with potentional concurrency crash when updating lookup tables in PEER_LINK;

82-dvmbridge---implement-notch-filter-for-2175hz-trc-guard-tone
Bryan Biedenkapp 1 year ago
parent a82f848de4
commit 3b395a99cf

@ -63,6 +63,8 @@ bool Thread::run()
void Thread::wait() void Thread::wait()
{ {
if (!m_started)
return;
#if defined(_WIN32) #if defined(_WIN32)
::WaitForSingleObject(m_thread, INFINITE); ::WaitForSingleObject(m_thread, INFINITE);
::CloseHandle(m_thread); ::CloseHandle(m_thread);

@ -178,6 +178,12 @@ namespace lookups
*/ */
void filename(std::string filename) { m_filename = filename; }; void filename(std::string filename) { m_filename = filename; };
/**
* @brief Helper to set the reload time of this lookup table.
* @param reloadTime Lookup time in seconds.
*/
void setReloadTime(uint32_t reloadTime) { m_reloadTime = 0U; }
protected: protected:
std::string m_filename; std::string m_filename;
uint32_t m_reloadTime; uint32_t m_reloadTime;

@ -599,6 +599,12 @@ namespace lookups
*/ */
void filename(std::string filename) { m_rulesFile = filename; }; void filename(std::string filename) { m_rulesFile = filename; };
/**
* @brief Helper to set the reload time of this lookup table.
* @param reloadTime Lookup time in seconds.
*/
void setReloadTime(uint32_t reloadTime) { m_reloadTime = 0U; }
private: private:
std::string m_rulesFile; std::string m_rulesFile;
uint32_t m_reloadTime; uint32_t m_reloadTime;

@ -222,6 +222,7 @@ void PeerNetwork::userPacketHandler(uint32_t peerId, FrameQueue::OpcodePair opco
file.close(); file.close();
m_tidLookup->stop(true); m_tidLookup->stop(true);
m_tidLookup->setReloadTime(0U);
m_tidLookup->filename(filename); m_tidLookup->filename(filename);
m_tidLookup->reload(); m_tidLookup->reload();
@ -359,6 +360,7 @@ void PeerNetwork::userPacketHandler(uint32_t peerId, FrameQueue::OpcodePair opco
file.close(); file.close();
m_ridLookup->stop(true); m_ridLookup->stop(true);
m_ridLookup->setReloadTime(0U);
m_ridLookup->filename(filename); m_ridLookup->filename(filename);
m_ridLookup->reload(); m_ridLookup->reload();
@ -496,6 +498,7 @@ void PeerNetwork::userPacketHandler(uint32_t peerId, FrameQueue::OpcodePair opco
file.close(); file.close();
m_pidLookup->stop(true); m_pidLookup->stop(true);
m_pidLookup->setReloadTime(0U);
m_pidLookup->filename(filename); m_pidLookup->filename(filename);
m_pidLookup->reload(); m_pidLookup->reload();

Loading…
Cancel
Save

Powered by TurnKey Linux.