From ebbfc484b4c167bd210257d31dcbb6bda9ca8af5 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Thu, 22 Jan 2026 15:48:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B7=D0=B1=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BB=D0=B5=D1=82=D0=B5=20=D0=90=D0=A0=D0=9C=20?= =?UTF-8?q?=D0=98=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../multithreadserver/multithreadserver.cpp | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) 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 += ", ";