From 2f1ea8e7260467317f8e75490448c81d8f597b87 Mon Sep 17 00:00:00 2001 From: wellenvogel Date: Sun, 12 Dec 2021 12:46:17 +0100 Subject: [PATCH] limit tcp clients to 6 --- lib/socketserver/GwSocketServer.cpp | 8 +++++--- src/main.cpp | 2 ++ web/config.json | 4 ++-- web/index.js | 14 ++++++++++++++ 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/socketserver/GwSocketServer.cpp b/lib/socketserver/GwSocketServer.cpp index d103a6a..4dfe897 100644 --- a/lib/socketserver/GwSocketServer.cpp +++ b/lib/socketserver/GwSocketServer.cpp @@ -151,15 +151,17 @@ GwSocketServer::GwSocketServer(const GwConfigHandler *config,GwLog *logger,int m this->config=config; this->logger=logger; this->minId=minId; - maxClients=config->getInt(config->maxClients); - allowReceive=config->getBool(config->readTCP); + maxClients=1; + allowReceive=false; } void GwSocketServer::begin(){ + maxClients=config->getInt(config->maxClients); + allowReceive=config->getBool(config->readTCP); clients=new gwClientPtr[maxClients]; for (int i=0;igetInt(config->serverPort),maxClients); + server=new WiFiServer(config->getInt(config->serverPort),maxClients+1); server->begin(); logger->logString("Socket server created, port=%d", config->getInt(config->serverPort)); diff --git a/src/main.cpp b/src/main.cpp index eb6204f..c55d24d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -871,8 +871,10 @@ void loop() { } } monitor.setTime(3); + //read sockets socketServer.loop(true,false); monitor.setTime(4); + //write sockets socketServer.loop(false,true); monitor.setTime(5); usbSerial->loop(true); diff --git a/web/config.json b/web/config.json index af2cb81..6353bee 100644 --- a/web/config.json +++ b/web/config.json @@ -372,10 +372,10 @@ "name": "maxClients", "label": "max. TCP clients", "type": "number", - "default": "10", + "default": "6", "check": "checkMinMax", "min": 0, - "max": 10, + "max": 6, "description": "the number of clients we allow to connect to us", "category": "TCP port" }, diff --git a/web/index.js b/web/index.js index afd1ecb..cb65ac2 100644 --- a/web/index.js +++ b/web/index.js @@ -92,6 +92,20 @@ function resetForm(ev) { let el = document.querySelector("[name='" + k + "']"); if (el) { let v = jsonData[k]; + let def=getConfigDefition(k); + if (def.check == 'checkMinMax'){ + //simple migration if the current value is outside the range + //we even "hide" this from the user + v=parseFloat(v); + if (! isNaN(v)){ + if (def.min !== undefined){ + if (v < parseFloat(def.min)) v=parseFloat(def.min); + } + if (def.max !== undefined){ + if (v > parseFloat(def.max)) v=parseFloat(def.max); + } + } + } el.value = v; el.setAttribute('data-loaded', v); let changeEvent = new Event('change');