Shutdown fix.

This commit is contained in:
Adam Ierymenko 2020-11-18 22:13:06 -05:00
parent a390629371
commit 11545bdb5d
No known key found for this signature in database
GPG Key ID: C8877CF2D7A5D7F3
2 changed files with 7 additions and 2 deletions

View File

@ -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();

View File

@ -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;