X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnntp%2Fnntplistener.cpp;h=01fa442c8a4c5d6a1c5be07d2a9ed9fdffb8d737;hb=0574a75431d98ed64c5cc6291600bb3759b399a6;hp=cfb72d710fec1c6fdbac8c30dadaf7d4bc21ac9f;hpb=d8ccfe2b3944adf07d35534459cdda19d15217c8;p=fms.git diff --git a/src/nntp/nntplistener.cpp b/src/nntp/nntplistener.cpp index cfb72d7..01fa442 100644 --- a/src/nntp/nntplistener.cpp +++ b/src/nntp/nntplistener.cpp @@ -75,11 +75,12 @@ void NNTPListener::Run() newsock=accept((*listeni),(struct sockaddr *)&addr,&addrlen); LogFile::Instance()->WriteLog(LogFile::LOGLEVEL_INFO,"NNTPListener::run NNTP client connected"); //m_connections.execute(new NNTPConnection(newsock)); - m_connectionthreads.push_back(new PThread::Thread(new NNTPConnection(newsock))); + //m_connectionthreads.push_back(new PThread::Thread(new NNTPConnection(newsock))); + m_connections.Execute(new NNTPConnection(newsock)); } } } - +/* // check for any non-running connection threads that we can delete for(std::vector::iterator i=m_connectionthreads.begin(); i!=m_connectionthreads.end(); ) { @@ -93,6 +94,7 @@ void NNTPListener::Run() i++; } } +*/ //}while(!ZThread::Thread::interrupted() && m_listensockets.size()>0); }while(!IsCancelled() && m_listensockets.size()>0); @@ -116,6 +118,7 @@ void NNTPListener::Run() } } */ + /* for(std::vector::iterator i=m_connectionthreads.begin(); i!=m_connectionthreads.end(); i++) { if((*i)->IsRunning()) @@ -126,6 +129,9 @@ void NNTPListener::Run() } delete (*i); } + */ + m_connections.Cancel(); + m_connections.Join(); for(listeni=m_listensockets.begin(); listeni!=m_listensockets.end(); listeni++) { @@ -178,6 +184,10 @@ void NNTPListener::StartListen() sock=socket(current->ai_family,current->ai_socktype,current->ai_protocol); if(sock!=INVALID_SOCKET) { + #ifndef _WIN32 + const char optval='1'; + setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&optval,1); + #endif if(bind(sock,current->ai_addr,current->ai_addrlen)==0) { if(listen(sock,10)==0)