Browse Source

Shutdown fix.

pull/2/head
Adam Ierymenko 5 years ago
parent
commit
11545bdb5d
No known key found for this signature in database
GPG Key ID: C8877CF2D7A5D7F3
  1. 8
      osdep/LinuxEthernetTap.cpp
  2. 1
      osdep/LinuxEthernetTap.hpp

8
osdep/LinuxEthernetTap.cpp

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

1
osdep/LinuxEthernetTap.hpp

@ -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…
Cancel
Save