version 0.1.2
[fms.git] / src / nntp / nntplistener.cpp
index 29f8eb4..01b008d 100644 (file)
@@ -82,15 +82,30 @@ void NNTPListener::run()
        // 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
-               m_connections.wait();\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
+       }\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