From b17510218bdcb57a2126f6ad8f1917ce17dcb887 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Tue, 8 Nov 2022 15:25:27 +0300 Subject: [PATCH] some fix for PICloudServer --- libs/cloud/picloudserver.cpp | 9 ++++++--- main_picloud_test.cpp | 3 +-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/cloud/picloudserver.cpp b/libs/cloud/picloudserver.cpp index 2e0949eb..220473a1 100644 --- a/libs/cloud/picloudserver.cpp +++ b/libs/cloud/picloudserver.cpp @@ -29,7 +29,9 @@ PICloudServer::PICloudServer(const PIString & path, PIIODevice::DeviceMode mode) CONNECTL(ð, connected, [this](){opened_ = true; piCoutObj << "connected" << ð tcp.sendStart();}); CONNECTL(ð, disconnected, [this](bool){ piCoutObj << "disconnected" << ð - eth.stop(); + for (auto c : clients_) { + delete c; + } opened_ = false; ping_timer.stop(false); piMSleep(100); @@ -88,6 +90,7 @@ bool PICloudServer::closeDevice() { for (auto c : clients_) { delete c; } + clients_.clear(); return true; } @@ -220,6 +223,7 @@ void PICloudServer::_readed(PIByteArray & ba) { Client * oc = index_clients.value(id, nullptr); clients_mutex.unlock(); if (oc) { + oc->stopAndWait(); //oc->is_connected = false; //oc->close(); delete oc; @@ -245,8 +249,7 @@ void PICloudServer::clientDeleted(PIObject * o) { clients_mutex.lock(); clients_.removeOne(c); auto it = index_clients.makeIterator(); - while (it.hasNext()) { - it.next(); + while (it.next()) { if (it.value() == c) { index_clients.remove(it.key()); break; diff --git a/main_picloud_test.cpp b/main_picloud_test.cpp index dbaea6ba..c94886b0 100644 --- a/main_picloud_test.cpp +++ b/main_picloud_test.cpp @@ -52,10 +52,9 @@ int main(int argc, char * argv[]) { })); CONNECTL(cl, closed, ([&clients, cl](){ piCout << "[Server] client closed ..." << cl; - cl->stop(); + cl->stopAndWait(); clients.removeAll(cl); piCout << "[Server] client closed ok" << cl; - //cl->deleteLater(); })); cl->startThreadedRead(); }));