treat threadedNetworkRx and threadedACLUpdate with pthread_detach and ensure they will not retain resources waiting for a pthread_join that'll never happen;

pull/51/head
Bryan Biedenkapp 2 years ago
parent d38e8d00da
commit 92a5bbd580

@ -161,6 +161,8 @@ void* DiagNetwork::threadedNetworkRx(void* arg)
{
NetPacketRequest* req = (NetPacketRequest*)arg;
if (req != nullptr) {
::pthread_detach(req->thread);
FNENetwork* network = req->network;
if (req->length > 0) {
uint32_t peerId = req->fneHeader.getPeerId();

@ -319,6 +319,8 @@ void* FNENetwork::threadedNetworkRx(void* arg)
{
NetPacketRequest* req = (NetPacketRequest*)arg;
if (req != nullptr) {
::pthread_detach(req->thread);
uint64_t now = std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now().time_since_epoch()).count();
FNENetwork* network = req->network;
@ -1040,6 +1042,8 @@ void* FNENetwork::threadedACLUpdate(void* arg)
{
ACLUpdateRequest* req = (ACLUpdateRequest*)arg;
if (req != nullptr) {
::pthread_detach(req->thread);
LogInfoEx(LOG_NET, "PEER %u sending ACL list updates", req->peerId);
req->network->writeWhitelistRIDs(req->peerId);
@ -1047,9 +1051,7 @@ void* FNENetwork::threadedACLUpdate(void* arg)
req->network->writeTGIDs(req->peerId);
req->network->writeDeactiveTGIDs(req->peerId);
uint32_t thread = req->thread;
delete req;
::pthread_exit(&thread);
}
return nullptr;

Loading…
Cancel
Save

Powered by TurnKey Linux.