picloud fix segfault on close

This commit is contained in:
2021-04-07 15:52:53 +03:00
parent 1fd9851068
commit fd2e0b2eed
6 changed files with 36 additions and 20 deletions

View File

@@ -37,11 +37,6 @@ PICloudServer::PICloudServer(const PIString & path, PIIODevice::DeviceMode mode)
PICloudServer::~PICloudServer() {
stop();
eth.stop();
for (auto & c : clients) {
c->stop();
c->close();
}
close();
}
@@ -76,11 +71,14 @@ bool PICloudServer::closeDevice() {
int PICloudServer::readDevice(void * read_to, int max_size) {
piCoutObj << "readDevice";
piMSleep(eth.readTimeout());
return -1;
}
int PICloudServer::writeDevice(const void * data, int max_size) {
piCoutObj << "writeDevice";
return -1;
}
@@ -123,8 +121,8 @@ int PICloudServer::Client::readDevice(void * read_to, int max_size) {
}
int PICloudServer::Client::writeDevice(const void * data, int max_size) {
return server->sendData(PIByteArray(data, max_size), client_id);
int PICloudServer::Client::writeDevice(const void * data, int size) {
return server->sendData(PIByteArray(data, size), client_id);
}
@@ -147,6 +145,7 @@ void PICloudServer::_readed(PIByteArray & ba) {
if (oc) {
tcp.sendDisconnected(id);
} else {
piCoutObj << "new Client" << id;
Client * c = new Client(this, id);
clients << c;
index_clients.insert(id, c);