From 8e9adec8d8bf82d688a3134462b0b59e5cad3368 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Mon, 20 Dec 2021 23:27:07 +0100 Subject: [PATCH] Fix a crash when removing a currently connected transport Both, the TCP transport as well as the WebSocket transport were crashing on this, but with different bugs. --- libnymea-core/servers/tcpserver.cpp | 4 ++++ libnymea-core/servers/websocketserver.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libnymea-core/servers/tcpserver.cpp b/libnymea-core/servers/tcpserver.cpp index 48b2a937..83f94c87 100644 --- a/libnymea-core/servers/tcpserver.cpp +++ b/libnymea-core/servers/tcpserver.cpp @@ -201,6 +201,10 @@ bool TcpServer::stopServer() if (!m_server) return true; + foreach (QTcpSocket *client, m_clientList) { + client->abort(); + } + m_server->close(); m_server->deleteLater(); m_server = nullptr; diff --git a/libnymea-core/servers/websocketserver.cpp b/libnymea-core/servers/websocketserver.cpp index 4fc196c4..b41767a5 100644 --- a/libnymea-core/servers/websocketserver.cpp +++ b/libnymea-core/servers/websocketserver.cpp @@ -239,7 +239,7 @@ bool WebSocketServer::stopServer() if (m_server) { m_server->close(); - delete m_server; + m_server->deleteLater(); m_server = nullptr; } return true;