#include <winsock2.h>\r
#include <ws2tcpip.h>\r
#else\r
-\r
+ #include <netinet/in.h> // gcc - IPPROTO_ consts\r
+ #include <netdb.h> // gcc - addrinfo\r
#endif\r
\r
#ifdef XMEM\r
void NNTPListener::run()\r
{\r
int rval;\r
- struct fd_set readfs;\r
+ fd_set readfs;\r
struct timeval tv;\r
std::vector<SOCKET>::iterator listeni;\r
SOCKET highsocket;\r
// see if any threads are still running - just calling interrupt without check would cause assert in debug mode\r
if(m_connections.wait(1)==false)\r
{\r
+ LogFile::instance()->WriteLog(LogFile::LOGLEVEL_DEBUG,"NNTPListener::run interrupting connection threads and waiting 60 seconds for exit.");\r
try\r
{\r
m_connections.interrupt();\r
}\r
catch(...)\r
{\r
+ LogFile::instance()->WriteLog(LogFile::LOGLEVEL_DEBUG,"NNTPListener::run caught unhandled exception.");\r
+ }\r
+ if(m_connections.wait(60)==false)\r
+ {\r
+ LogFile::instance()->WriteLog(LogFile::LOGLEVEL_DEBUG,"NNTPListener::run connection threads did not exit after 60 seconds.");\r
}\r
- m_connections.wait();\r
}\r
\r
+ for(listeni=m_listensockets.begin(); listeni!=m_listensockets.end(); listeni++)\r
+ {\r
+ #ifdef _WIN32\r
+ closesocket((*listeni));\r
+ #else\r
+ close((*listeni));\r
+ #endif\r
+ }\r
+ m_listensockets.clear();\r
+\r
}\r
\r
void NNTPListener::StartListen()\r