77\*-----------------------------------------*/
88
99#include " NetworkServer.h"
10+ #include " ResourceManager.h"
11+ #include " LogManager.h"
1012#include < cstring>
1113
1214#ifndef WIN32
@@ -33,6 +35,17 @@ const char yes = 1;
3335using namespace std ::chrono_literals;
3436
3537
38+ NetworkClientInfo::~NetworkClientInfo ()
39+ {
40+ if (client_sock != INVALID_SOCKET)
41+ {
42+ LOG_NOTICE (" Closing server connection: %s" , client_ip);
43+ delete client_listen_thread;
44+ shutdown (client_sock, SD_RECEIVE);
45+ closesocket (client_sock);
46+ }
47+ }
48+
3649NetworkServer::NetworkServer (std::vector<RGBController *>& control) : controllers(control)
3750{
3851 port_num = OPENRGB_SDK_PORT;
@@ -280,17 +293,17 @@ void NetworkServer::StopServer()
280293 server_online = false ;
281294
282295 ServerClientsMutex.lock ();
296+
283297 for (unsigned int client_idx = 0 ; client_idx < ServerClients.size (); client_idx++)
284298 {
285- shutdown (ServerClients[client_idx]->client_sock , SD_RECEIVE);
286- closesocket (ServerClients[client_idx]->client_sock );
287299 delete ServerClients[client_idx];
288300 }
289301
302+ ServerClients.clear ();
303+
290304 shutdown (server_sock, SD_RECEIVE);
291305 closesocket (server_sock);
292306
293- ServerClients.clear ();
294307 ServerClientsMutex.unlock ();
295308
296309 if (ConnectionThread)
@@ -726,23 +739,21 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
726739 }
727740
728741listen_done:
729- printf (" Server connection closed\r\n " );
730- shutdown (client_info->client_sock , SD_RECEIVE);
731- closesocket (client_info->client_sock );
732742
733743 ServerClientsMutex.lock ();
734744
735745 for (unsigned int this_idx = 0 ; this_idx < ServerClients.size (); this_idx++)
736746 {
737747 if (ServerClients[this_idx] == client_info)
738748 {
739- delete client_info->client_listen_thread ;
740749 delete client_info;
741750 ServerClients.erase (ServerClients.begin () + this_idx);
742751 break ;
743752 }
744753 }
745754
755+ client_info = nullptr ;
756+
746757 ServerClientsMutex.unlock ();
747758
748759 /* -------------------------------------------------*\
0 commit comments