From 7ed5bb2bd3ef0157281ae9b42235d34e253984fe Mon Sep 17 00:00:00 2001 From: roddrok Date: Thu, 29 Jan 2026 16:16:20 +0000 Subject: [PATCH] When adding a socket to the pool, if it already exists in the pool, it is updated --- source/clientserver/manageSockets.cpp | 30 +++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/source/clientserver/manageSockets.cpp b/source/clientserver/manageSockets.cpp index c7224d01e..79862f546 100755 --- a/source/clientserver/manageSockets.cpp +++ b/source/clientserver/manageSockets.cpp @@ -32,21 +32,25 @@ void initSocketList(SOCKETLIST* socks) int addSocket(SOCKETLIST* socks, int type, int status, char* host, int port, int fh) { int old_fh = -1; + int isock; + if (!getSocket(socks, type, &status, host, port, &old_fh)) { // Is an Open Socket already listed? - if (old_fh == fh) return 0; + isock=getSocketRecordId(socks, old_fh); } - - socks->sockets = (Sockets*)realloc(socks->sockets, (socks->nsocks + 1) * sizeof(SOCKETS)); - socks->sockets[socks->nsocks].type = type; - socks->sockets[socks->nsocks].status = status; - socks->sockets[socks->nsocks].fh = fh; - socks->sockets[socks->nsocks].port = port; - - strcpy(socks->sockets[socks->nsocks].host, host); - socks->sockets[socks->nsocks].tv_server_start = 0; - socks->sockets[socks->nsocks].user_timeout = 0; - socks->sockets[socks->nsocks].protocol_version=-1; - socks->sockets[socks->nsocks].server_version=0; + else { + socks->sockets = (Sockets*)realloc(socks->sockets, (socks->nsocks + 1) * sizeof(SOCKETS)); + isock=socks->nsocks; + } + socks->sockets[isock].type = type; + socks->sockets[isock].status = status; + socks->sockets[isock].fh = fh; + socks->sockets[isock].port = port; + + strcpy(socks->sockets[isock].host, host); + socks->sockets[isock].tv_server_start = 0; + socks->sockets[isock].user_timeout = 0; + socks->sockets[isock].protocol_version=-1; + socks->sockets[isock].server_version=0; (socks->nsocks)++; return 0;