From 620d7890cdd28b3580b60a6ae737536a2057d9bc Mon Sep 17 00:00:00 2001 From: Phil Taylor Date: Wed, 20 Oct 2021 12:47:16 +0100 Subject: [PATCH] Tidy-up server shutdown --- udpserver.cpp | 74 ++++----------------------------------------------- 1 file changed, 5 insertions(+), 69 deletions(-) diff --git a/udpserver.cpp b/udpserver.cpp index ca4daec..0c79b90 100644 --- a/udpserver.cpp +++ b/udpserver.cpp @@ -67,82 +67,22 @@ udpServer::~udpServer() { qInfo(logUdpServer()) << "Closing udpServer"; - connMutex.lock(); - foreach(CLIENT * client, controlClients) { - if (client->idleTimer != Q_NULLPTR) - { - client->idleTimer->stop(); - delete client->idleTimer; - } - if (client->pingTimer != Q_NULLPTR) { - client->pingTimer->stop(); - delete client->pingTimer; - } + deleteConnection(&controlClients, client); - if (client->retransmitTimer != Q_NULLPTR) { - client->retransmitTimer->stop(); - delete client->retransmitTimer; - } - - controlClients.removeAll(client); - delete client; } foreach(CLIENT * client, civClients) { - if (client->idleTimer != Q_NULLPTR) - { - client->idleTimer->stop(); - delete client->idleTimer; - } - if (client->pingTimer != Q_NULLPTR) { - client->pingTimer->stop(); - delete client->pingTimer; - } - if (client->retransmitTimer != Q_NULLPTR) { - client->retransmitTimer->stop(); - delete client->retransmitTimer; - } - - civClients.removeAll(client); - delete client; + deleteConnection(&civClients, client); } + foreach(CLIENT * client, audioClients) { - if (client->idleTimer != Q_NULLPTR) - { - client->idleTimer->stop(); - delete client->idleTimer; - } - if (client->pingTimer != Q_NULLPTR) { - client->pingTimer->stop(); - delete client->pingTimer; - } - if (client->retransmitTimer != Q_NULLPTR) { - client->retransmitTimer->stop(); - delete client->retransmitTimer; - } - audioClients.removeAll(client); - delete client; - } - - if (rxAudioTimer != Q_NULLPTR) { - rxAudioTimer->stop(); - delete rxAudioTimer; - rxAudioTimer = Q_NULLPTR; - } - - if (rxAudioThread != Q_NULLPTR) { - rxAudioThread->quit(); - rxAudioThread->wait(); - } - - if (txAudioThread != Q_NULLPTR) { - txAudioThread->quit(); - txAudioThread->wait(); + deleteConnection(&audioClients, client); } + // Now all connections are deleted, close and delete the sockets. if (udpControl != Q_NULLPTR) { udpControl->close(); delete udpControl; @@ -155,10 +95,6 @@ udpServer::~udpServer() udpAudio->close(); delete udpAudio; } - - connMutex.unlock(); - - }