picloud fix segfault on close
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user