diff --git a/Redirector/SocksHelper.cpp b/Redirector/SocksHelper.cpp index e249eff3..8dd7b5aa 100644 --- a/Redirector/SocksHelper.cpp +++ b/Redirector/SocksHelper.cpp @@ -264,6 +264,11 @@ SocksHelper::UDP::~UDP() this->udpSocket = INVALID_SOCKET; } + + if (this->tcpThread.joinable()) + { + this->tcpThread.join(); + } } bool SocksHelper::UDP::Associate() @@ -345,7 +350,8 @@ bool SocksHelper::UDP::CreateUDP() } } - thread(&SocksHelper::UDP::Run, this).detach(); + this->tcpThread = thread(&SocksHelper::UDP::Run, this); + this->tcpThread.detach(); return true; } diff --git a/Redirector/SocksHelper.h b/Redirector/SocksHelper.h index 0c0a39d6..a69d19d5 100644 --- a/Redirector/SocksHelper.h +++ b/Redirector/SocksHelper.h @@ -42,6 +42,7 @@ namespace SocksHelper void Run(); SOCKADDR_IN6 address = { 0 }; + thread tcpThread; } *PUDP; };