From 2b738f6f4377b02735b4872d52c0ddaf67dff717 Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 10 Mar 2024 21:22:05 +0300 Subject: [PATCH] more safety cloud_dispatcher --- utils/cloud_dispatcher/dispatcherserver.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/utils/cloud_dispatcher/dispatcherserver.cpp b/utils/cloud_dispatcher/dispatcherserver.cpp index 72ef2784..5a4740c6 100644 --- a/utils/cloud_dispatcher/dispatcherserver.cpp +++ b/utils/cloud_dispatcher/dispatcherserver.cpp @@ -45,6 +45,9 @@ void DispatcherServer::picoutStatus() { void DispatcherServer::cleanClients() { PIMutexLocker locker(map_mutex); + for (auto c: rmrf_clients) { + if (!c->isPIObject()) piCout << "ACHTUNG! Non-piobject client!"; + } piDeleteAllAndClear(rmrf_clients); for (auto c: clients) { if (!index_c_servers.contains(c) && !index_c_clients.contains(c)) { @@ -62,7 +65,7 @@ void DispatcherServer::cleanClients() { index_c_clients.remove(csc); c->removeClient(csc); csc->close(); - rmrf_clients << csc; + if (!rmrf_clients.contains(csc)) rmrf_clients << csc; } c_servers.remove(c->serverUUID()); index_c_servers.remove(c->getConnection()); @@ -72,7 +75,7 @@ void DispatcherServer::cleanClients() { } for (auto c: rm_clients) { if (clients.contains(c)) { - rmrf_clients << c; + if (!rmrf_clients.contains(c)) rmrf_clients << c; } } for (auto c: rmrf_clients) { @@ -197,7 +200,7 @@ void DispatcherServer::disconnectClient(DispatcherClient * client) { index_c_clients.remove(csc); cs->removeClient(csc); csc->close(); - rmrf_clients << csc; + if (!rmrf_clients.contains(csc)) rmrf_clients << csc; } c_servers.remove(cs->serverUUID()); index_c_servers.remove(client);