summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/serialbus/qmodbustcpserver.cpp4
-rw-r--r--src/serialbus/qmodbustcpserver_p.h5
2 files changed, 3 insertions, 6 deletions
diff --git a/src/serialbus/qmodbustcpserver.cpp b/src/serialbus/qmodbustcpserver.cpp
index 715c55c..ad7e2e5 100644
--- a/src/serialbus/qmodbustcpserver.cpp
+++ b/src/serialbus/qmodbustcpserver.cpp
@@ -98,7 +98,9 @@ void QModbusTcpServer::close()
if (d->m_tcpServer->isListening())
d->m_tcpServer->close();
- for (auto socket : std::as_const(d->connections))
+ const auto childSockets =
+ d->m_tcpServer->findChildren<QTcpSocket *>(Qt::FindDirectChildrenOnly);
+ for (auto socket : childSockets)
socket->disconnectFromHost();
setState(QModbusDevice::UnconnectedState);
diff --git a/src/serialbus/qmodbustcpserver_p.h b/src/serialbus/qmodbustcpserver_p.h
index 0f1cbfe..f7c392f 100644
--- a/src/serialbus/qmodbustcpserver_p.h
+++ b/src/serialbus/qmodbustcpserver_p.h
@@ -99,8 +99,6 @@ public:
return;
}
- connections.append(socket);
-
auto buffer = new QByteArray();
QObject::connect(socket, &QObject::destroyed, socket, [buffer]() {
@@ -108,8 +106,6 @@ public:
delete buffer;
});
QObject::connect(socket, &QTcpSocket::disconnected, q, [socket, this]() {
- connections.removeAll(socket);
-
Q_Q(QModbusTcpServer);
emit q->modbusClientDisconnected(socket);
socket->deleteLater();
@@ -193,7 +189,6 @@ public:
}
QTcpServer *m_tcpServer { nullptr };
- QList<QTcpSocket *> connections;
std::unique_ptr<QModbusTcpConnectionObserver> m_observer;