Skip to content

Commit abfb6ea

Browse files
k1-801CalcProgrammer1
authored andcommitted
Tiny fixups (server conn info leak closed, log va leak closed, config dir optimized)
Commit amended for code style by Adam Honse <calcprogrammer1@gmail.com>
1 parent 33b840b commit abfb6ea

5 files changed

Lines changed: 34 additions & 11 deletions

File tree

LogManager.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,9 @@ void LogManager::_append(const char* filename, int line, unsigned int level, con
186186
va_list va2;
187187
va_copy(va2, va);
188188
int len = vsnprintf(nullptr, 0, fmt, va);
189-
mes->buffer.resize(len + 1);
189+
mes->buffer.resize(len);
190190
vsnprintf(&(mes->buffer[0]), len + 1, fmt, va2);
191+
va_end(va2);
191192

192193
/*-------------------------------------------------*\
193194
| Fill in message information |

NetworkServer.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
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;
3335
using 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+
3649
NetworkServer::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

728741
listen_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
/*-------------------------------------------------*\

NetworkServer.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@
2121

2222
typedef void (*NetServerCallback)(void *);
2323

24-
struct NetworkClientInfo
24+
class NetworkClientInfo
2525
{
26+
public:
27+
~NetworkClientInfo();
28+
2629
SOCKET client_sock;
2730
std::thread * client_listen_thread;
2831
std::string client_string;

ResourceManager.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ ResourceManager::ResourceManager()
4343
detection_is_required = false;
4444
DetectDevicesThread = nullptr;
4545

46+
SetupConfigurationDirectory();
47+
4648
/*-------------------------------------------------------------------------*\
4749
| Load settings from file |
4850
\*-------------------------------------------------------------------------*/
@@ -309,9 +311,9 @@ void ResourceManager::I2CBusListChanged()
309311
I2CBusListChangeMutex.unlock();
310312
}
311313

312-
std::string ResourceManager::GetConfigurationDirectory()
314+
void ResourceManager::SetupConfigurationDirectory()
313315
{
314-
std::string config_dir = "";
316+
config_dir.clear();
315317
const char* xdg_config_home = getenv("XDG_CONFIG_HOME");
316318
const char* home = getenv("HOME");
317319
const char* appdata = getenv("APPDATA");
@@ -357,7 +359,10 @@ std::string ResourceManager::GetConfigurationDirectory()
357359
{
358360
config_dir = "./";
359361
}
362+
}
360363

364+
std::string ResourceManager::GetConfigurationDirectory()
365+
{
361366
return(config_dir);
362367
}
363368

ResourceManager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ class ResourceManager: public ResourceManagerInterface
153153
private:
154154
void DetectDevicesThreadFunction();
155155
void UpdateDetectorSettings();
156+
void SetupConfigurationDirectory();
156157

157158
/*-------------------------------------------------------------------------------------*\
158159
| Static pointer to shared instance of ResourceManager |
@@ -243,4 +244,6 @@ class ResourceManager: public ResourceManagerInterface
243244
std::mutex I2CBusListChangeMutex;
244245
std::vector<I2CBusListChangeCallback> I2CBusListChangeCallbacks;
245246
std::vector<void *> I2CBusListChangeCallbackArgs;
247+
248+
std::string config_dir;
246249
};

0 commit comments

Comments
 (0)