fix cloud ... :-/

This commit is contained in:
2024-03-25 21:24:29 +03:00
parent 0d585cfebf
commit 2db9440a38
2 changed files with 5 additions and 1 deletions

View File

@@ -49,6 +49,9 @@ void DispatcherServer::cleanClients() {
if (!c->isPIObject()) piCout << "ACHTUNG! Non-piobject client!"; if (!c->isPIObject()) piCout << "ACHTUNG! Non-piobject client!";
} }
piDeleteAllAndClear(rmrf_clients); piDeleteAllAndClear(rmrf_clients);
for (auto s: rmrf_servers)
s->close();
piDeleteAllAndClear(rmrf_servers);
for (auto c: clients) { for (auto c: clients) {
if (!index_c_servers.contains(c) && !index_c_clients.contains(c)) { if (!index_c_servers.contains(c) && !index_c_clients.contains(c)) {
if (!rm_clients.contains(c)) rm_clients << c; if (!rm_clients.contains(c)) rm_clients << c;
@@ -205,7 +208,7 @@ void DispatcherServer::disconnectClient(DispatcherClient * client) {
} }
c_servers.remove(cs->serverUUID()); c_servers.remove(cs->serverUUID());
index_c_servers.remove(client); index_c_servers.remove(client);
delete cs; if (!rmrf_servers.contains(cs)) rmrf_servers << cs;
} }
CloudServer * cc = index_c_clients.value(client, nullptr); CloudServer * cc = index_c_clients.value(client, nullptr);
if (cc) { if (cc) {

View File

@@ -36,6 +36,7 @@ private:
PIMap<const DispatcherClient *, CloudServer *> index_c_clients; PIMap<const DispatcherClient *, CloudServer *> index_c_clients;
PIVector<DispatcherClient *> rm_clients; PIVector<DispatcherClient *> rm_clients;
PIVector<DispatcherClient *> rmrf_clients; PIVector<DispatcherClient *> rmrf_clients;
PIVector<CloudServer *> rmrf_servers;
PITimer timeout_timer; PITimer timeout_timer;
PIMutex map_mutex; PIMutex map_mutex;
uint client_gid; uint client_gid;