|
|
|
|
@ -7,6 +7,8 @@
|
|
|
|
|
\*-----------------------------------------*/
|
|
|
|
|
|
|
|
|
|
#include "NetworkServer.h"
|
|
|
|
|
#include "ResourceManager.h"
|
|
|
|
|
#include "LogManager.h"
|
|
|
|
|
#include <cstring>
|
|
|
|
|
|
|
|
|
|
#ifndef WIN32
|
|
|
|
|
@ -33,6 +35,17 @@ const char yes = 1;
|
|
|
|
|
using namespace std::chrono_literals;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NetworkClientInfo::~NetworkClientInfo()
|
|
|
|
|
{
|
|
|
|
|
if(client_sock != INVALID_SOCKET)
|
|
|
|
|
{
|
|
|
|
|
LOG_NOTICE("Closing server connection: %s", client_ip);
|
|
|
|
|
delete client_listen_thread;
|
|
|
|
|
shutdown(client_sock, SD_RECEIVE);
|
|
|
|
|
closesocket(client_sock);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NetworkServer::NetworkServer(std::vector<RGBController *>& control) : controllers(control)
|
|
|
|
|
{
|
|
|
|
|
port_num = OPENRGB_SDK_PORT;
|
|
|
|
|
@ -280,17 +293,17 @@ void NetworkServer::StopServer()
|
|
|
|
|
server_online = false;
|
|
|
|
|
|
|
|
|
|
ServerClientsMutex.lock();
|
|
|
|
|
|
|
|
|
|
for(unsigned int client_idx = 0; client_idx < ServerClients.size(); client_idx++)
|
|
|
|
|
{
|
|
|
|
|
shutdown(ServerClients[client_idx]->client_sock, SD_RECEIVE);
|
|
|
|
|
closesocket(ServerClients[client_idx]->client_sock);
|
|
|
|
|
delete ServerClients[client_idx];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ServerClients.clear();
|
|
|
|
|
|
|
|
|
|
shutdown(server_sock, SD_RECEIVE);
|
|
|
|
|
closesocket(server_sock);
|
|
|
|
|
|
|
|
|
|
ServerClients.clear();
|
|
|
|
|
ServerClientsMutex.unlock();
|
|
|
|
|
|
|
|
|
|
if(ConnectionThread)
|
|
|
|
|
@ -726,9 +739,6 @@ void NetworkServer::ListenThreadFunction(NetworkClientInfo * client_info)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
listen_done:
|
|
|
|
|
printf("Server connection closed\r\n");
|
|
|
|
|
shutdown(client_info->client_sock, SD_RECEIVE);
|
|
|
|
|
closesocket(client_info->client_sock);
|
|
|
|
|
|
|
|
|
|
ServerClientsMutex.lock();
|
|
|
|
|
|
|
|
|
|
@ -736,13 +746,14 @@ listen_done:
|
|
|
|
|
{
|
|
|
|
|
if(ServerClients[this_idx] == client_info)
|
|
|
|
|
{
|
|
|
|
|
delete client_info->client_listen_thread;
|
|
|
|
|
delete client_info;
|
|
|
|
|
ServerClients.erase(ServerClients.begin() + this_idx);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
client_info = nullptr;
|
|
|
|
|
|
|
|
|
|
ServerClientsMutex.unlock();
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------*\
|
|
|
|
|
|