diff --git a/LibServer/multithreadserver/multithreadserver.cpp b/LibServer/multithreadserver/multithreadserver.cpp index 5c440af..164e1e4 100644 --- a/LibServer/multithreadserver/multithreadserver.cpp +++ b/LibServer/multithreadserver/multithreadserver.cpp @@ -44,7 +44,7 @@ bool MultiThreadServer::startServer() { stateServer = started; - slot_BlockAutorization(false, "SERVER", "StartServer"); + slot_BlockAutorization(false, "SERVER", "StopServer"); Logger::instance().log("SERVER: start OK"); return true; } @@ -158,6 +158,10 @@ bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, { if(whoFullName == "SERVER") { + if(type == "StopServer") + { + blockersMap.clear(); + } this->blockAutorization(); blockersMap.insert(key, type); blockRes = true; @@ -196,7 +200,24 @@ bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, } else { - blockersMap.take(key); + if(type == "DeAuthorizationInstructor") + { + QStringList listKeyForDel; + for(QString keyLocal : blockersMap.keys()) + { + if(keyLocal.contains(whoFullName)) + listKeyForDel.append(keyLocal); + } + for(QString keyLocal : listKeyForDel) + { + blockersMap.take(keyLocal); + } + } + else + { + blockersMap.take(key); + } + if(!blockersMap.count()) { this->unBlockAutorization(); @@ -215,7 +236,7 @@ bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, else emit signal_sendPacketToAllClients(PacketType::FREE); - foreach(QString keyLocal, blockersMap.keys()) + for(QString keyLocal : blockersMap.keys()) { if(strTypes != "") strTypes += ", ";