Преглед на файлове

Possible fix for Linux deadlock.

Adam Ierymenko преди 4 години
родител
ревизия
21993819a5
променени са 1 файла, в които са добавени 4 реда и са изтрити 4 реда
  1. 4 4
      osdep/LinuxEthernetTap.cpp

+ 4 - 4
osdep/LinuxEthernetTap.cpp

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