diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index d13a6169..8f8a26be 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -7,7 +7,7 @@ #include "messagefilter.h" #include "cleanerconfig.h" -CleanerServer::CleanerServer(): config(0) +CleanerServer::CleanerServer(): config(0), blockConnection(false) { config = new CleanerConfig; @@ -36,9 +36,11 @@ CleanerServer::~CleanerServer() void CleanerServer::newCon() { - if(!tcpSocket->isOpen()) { + if(!blockConnection) { tcpSocket = tcpServer->nextPendingConnection(); connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); + connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); + blockConnection = true; } } @@ -57,6 +59,12 @@ void CleanerServer::onRead() tcpSocket->write(checkMessage.toAscii().data(), checkMessage.length()); } +void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) { + + qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; + if(state == QAbstractSocket::UnconnectedState) blockConnection = false; +} + void CleanerServer::refreshConfig() { config->fillBuffer(); diff --git a/src/chatcleaner/cleanerserver.h b/src/chatcleaner/cleanerserver.h index 3f18ef9e..d2fac8c8 100644 --- a/src/chatcleaner/cleanerserver.h +++ b/src/chatcleaner/cleanerserver.h @@ -17,7 +17,7 @@ public: private slots: void newCon(); void onRead(); - + void socketStateChanged(QAbstractSocket::SocketState); void refreshConfig(); private: @@ -27,6 +27,7 @@ private: MessageFilter *myMessageFilter; CleanerConfig *config; + bool blockConnection; }; #endif // CLEANERSERVER_H