Skip to content

Commit 3352c83

Browse files
BetterComputingLinks2004
authored andcommitted
- Fix memory leak by calling delete _server in the WebSocketsServer destructor.
- Improve performance by looking for match to existing socket before creating a new one
1 parent 241c73a commit 3352c83

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/WebSocketsServer.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ WebSocketsServerCore::~WebSocketsServerCore() {
6565
}
6666

6767
WebSocketsServer::~WebSocketsServer() {
68+
delete _server;
6869
}
6970

7071
/**
@@ -428,8 +429,16 @@ WSclient_t * WebSocketsServerCore::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclien
428429
for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
429430
client = &_clients[i];
430431

432+
// look for match to existing socket before creating a new one
433+
if (clientIsConnected(client))
434+
{
435+
// Check to see if it is the same socket - if so, return it
436+
if (client->tcp->getSocketNumber() == TCPclient->getSocketNumber())
437+
{
438+
return client;
439+
}
440+
} else {
431441
// state is not connected or tcp connection is lost
432-
if(!clientIsConnected(client)) {
433442
client->tcp = TCPclient;
434443

435444
#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32)

0 commit comments

Comments
 (0)