mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-21 13:57:49 +00:00
Shutdown fix.
This commit is contained in:
parent
a390629371
commit
11545bdb5d
@ -92,7 +92,8 @@ LinuxEthernetTap::LinuxEthernetTap(
|
||||
_homePath(homePath),
|
||||
_mtu(mtu),
|
||||
_fd(0),
|
||||
_enabled(true)
|
||||
_enabled(true),
|
||||
_running(true)
|
||||
{
|
||||
static std::mutex s_tapCreateLock;
|
||||
char procpath[128],nwids[32];
|
||||
@ -267,7 +268,7 @@ LinuxEthernetTap::LinuxEthernetTap(
|
||||
|
||||
r = 0;
|
||||
}
|
||||
} else {
|
||||
} else if ((errno != EINTR)||(!_running.load())) {
|
||||
r = 0;
|
||||
break;
|
||||
}
|
||||
@ -297,9 +298,12 @@ LinuxEthernetTap::LinuxEthernetTap(
|
||||
|
||||
LinuxEthernetTap::~LinuxEthernetTap()
|
||||
{
|
||||
_running = false;
|
||||
|
||||
_tapq.post(std::pair<void *,int>(nullptr,0));
|
||||
::shutdown(_fd, SHUT_RDWR);
|
||||
::close(_fd);
|
||||
pthread_kill(_tapReaderThread.native_handle(), SIGUSR1);
|
||||
|
||||
_tapReaderThread.join();
|
||||
_tapProcessorThread.join();
|
||||
|
@ -69,6 +69,7 @@ private:
|
||||
unsigned int _mtu;
|
||||
int _fd;
|
||||
std::atomic_bool _enabled;
|
||||
std::atomic_bool _running;
|
||||
std::thread _tapReaderThread;
|
||||
std::thread _tapProcessorThread;
|
||||
std::mutex _buffers_l;
|
||||
|
Loading…
Reference in New Issue
Block a user