diff options
-rw-r--r-- | src/serialbus/qmodbustcpserver.cpp | 4 | ||||
-rw-r--r-- | src/serialbus/qmodbustcpserver_p.h | 5 |
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; |