Possible fix for Linux deadlock.

This commit is contained in:
Adam Ierymenko 2020-11-30 15:41:47 -05:00
parent c2eeb5d553
commit 21993819a5
No known key found for this signature in database
GPG key ID: C8877CF2D7A5D7F3

View file

@ -327,14 +327,14 @@ LinuxEthernetTap::~LinuxEthernetTap()
(void)::write(_shutdownSignalPipe[1],"\0",1); // causes reader thread(s) to exit
_tapq.post(std::pair<void *,int>(nullptr,0)); // causes processor thread to exit
::close(_fd);
::close(_shutdownSignalPipe[0]);
::close(_shutdownSignalPipe[1]);
_tapReaderThread[0].join();
_tapReaderThread[1].join();
_tapProcessorThread.join();
::close(_fd);
::close(_shutdownSignalPipe[0]);
::close(_shutdownSignalPipe[1]);
for(std::vector<void *>::iterator i(_buffers.begin());i!=_buffers.end();++i)
free(*i);
std::vector< std::pair<void *,int> > dv(_tapq.drain());