From 2db9440a38d212c2084b1a58954ca606029d8b45 Mon Sep 17 00:00:00 2001 From: peri4 Date: Mon, 25 Mar 2024 21:24:29 +0300 Subject: [PATCH] fix cloud ... :-/ --- utils/cloud_dispatcher/dispatcherserver.cpp | 5 ++++- utils/cloud_dispatcher/dispatcherserver.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/cloud_dispatcher/dispatcherserver.cpp b/utils/cloud_dispatcher/dispatcherserver.cpp index 90503e19..bd8d2c4e 100644 --- a/utils/cloud_dispatcher/dispatcherserver.cpp +++ b/utils/cloud_dispatcher/dispatcherserver.cpp @@ -49,6 +49,9 @@ void DispatcherServer::cleanClients() { if (!c->isPIObject()) piCout << "ACHTUNG! Non-piobject client!"; } piDeleteAllAndClear(rmrf_clients); + for (auto s: rmrf_servers) + s->close(); + piDeleteAllAndClear(rmrf_servers); for (auto c: clients) { if (!index_c_servers.contains(c) && !index_c_clients.contains(c)) { if (!rm_clients.contains(c)) rm_clients << c; @@ -205,7 +208,7 @@ void DispatcherServer::disconnectClient(DispatcherClient * client) { } c_servers.remove(cs->serverUUID()); index_c_servers.remove(client); - delete cs; + if (!rmrf_servers.contains(cs)) rmrf_servers << cs; } CloudServer * cc = index_c_clients.value(client, nullptr); if (cc) { diff --git a/utils/cloud_dispatcher/dispatcherserver.h b/utils/cloud_dispatcher/dispatcherserver.h index f22eeb8f..4c4cc82a 100644 --- a/utils/cloud_dispatcher/dispatcherserver.h +++ b/utils/cloud_dispatcher/dispatcherserver.h @@ -36,6 +36,7 @@ private: PIMap index_c_clients; PIVector rm_clients; PIVector rmrf_clients; + PIVector rmrf_servers; PITimer timeout_timer; PIMutex map_mutex; uint client_gid;