From 30d5e136665a52880f641ddd7245b3ba05ecd32b Mon Sep 17 00:00:00 2001 From: matth-x <63792403+matth-x@users.noreply.github.com> Date: Sat, 19 Aug 2023 19:08:56 +0200 Subject: [PATCH 01/15] set minimum bufsize for base64 encode --- src/WebSockets.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/WebSockets.cpp b/src/WebSockets.cpp index 260129fb..22352fc2 100644 --- a/src/WebSockets.cpp +++ b/src/WebSockets.cpp @@ -571,6 +571,7 @@ String WebSockets::acceptKey(String & clientKey) { */ String WebSockets::base64_encode(uint8_t * data, size_t length) { size_t size = ((length * 1.6f) + 1); + size = std::max(size, (size_t) 5); //minimum buffer size char * buffer = (char *)malloc(size); if(buffer) { base64_encodestate _state; From da7efc789e7ee3870c6745549e9a9b0dd1e5a3c4 Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 14:57:05 +0100 Subject: [PATCH 02/15] update github actions to arduino-cli for build tests --- .github/workflows/main.yml | 54 +++++++++++++------------------------- src/SocketIOclient.h | 2 +- src/WebSockets.cpp | 2 +- travis/common.sh | 26 +++++++++++++++++- 4 files changed, 45 insertions(+), 39 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 279fe851..0724e14c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,13 +37,13 @@ jobs: echo -en "matrix=" >> $GITHUB_OUTPUT echo -en "[" >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.0 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Serial1,lvl=SSL,wipe=none,baud=115200 >> $GITHUB_OUTPUT echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 1.8.19 esp8266com:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp8266_pico esp8266 0.35.0 esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=80,FlashMode=qio,eesz=4M2M,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 >> $GITHUB_OUTPUT echo -en "," >> $GITHUB_OUTPUT - get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 1.8.19 espressif:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT + get_sketches_json_matrix arduino $GITHUB_WORKSPACE/examples/esp32 esp32 0.35.0 esp32:esp32:esp32:FlashFreq=80 >> $GITHUB_OUTPUT echo -en "]" >> $GITHUB_OUTPUT echo >> $GITHUB_OUTPUT @@ -55,9 +55,10 @@ jobs: strategy: fail-fast: false matrix: - IDE_VERSION: [1.8.19] + IDE_VERSION: [0.35.0] env: IDE_VERSION: ${{ matrix.IDE_VERSION }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide steps: - uses: actions/checkout@v2 @@ -74,14 +75,15 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }} + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }}-cli - name: download IDE if: steps.cache_all.outputs.cache-hit != 'true' run: | - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz -q - tar xf arduino-$IDE_VERSION-linux64.tar.xz - mv arduino-$IDE_VERSION $HOME/arduino_ide + wget https://github.com/arduino/arduino-cli/releases/download/v$IDE_VERSION/arduino-cli$IDE_VERSION_Linux_64bit.tar.gz -q + tar xf arduino-cli_$IDE_VERSION_Linux_64bit.tar.gz + mkdir -p $ARDUINO_DIRECTORIES_DATA + mv arduino-cli $ARDUINO_DIRECTORIES_DATA/ - name: download ArduinoJson if: steps.cache_all.outputs.cache-hit != 'true' @@ -91,17 +93,12 @@ jobs: unzip 6.x.zip mv ArduinoJson-6.x $HOME/Arduino/libraries/ArduinoJson - - name: download esp8266 + - name: download cores if: steps.cache_all.outputs.cache-hit != 'true' run: | + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" source $GITHUB_WORKSPACE/travis/common.sh - get_core esp8266 - - - name: download esp32 - if: steps.cache_all.outputs.cache-hit != 'true' - run: | - source $GITHUB_WORKSPACE/travis/common.sh - get_core esp32 + get_core_cli build: needs: [prepare_ide, prepare_example_json] @@ -115,6 +112,7 @@ jobs: BOARD: ${{ matrix.board }} IDE_VERSION: ${{ matrix.ideversion }} SKETCH: ${{ matrix.sketch }} + ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide # Steps represent a sequence of tasks that will be executed as part of the job steps: @@ -136,7 +134,7 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }} + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }}-cli - name: install python serial if: matrix.cpu == 'esp32' @@ -145,32 +143,16 @@ jobs: sudo pip install pyserial # sudo apt install python-is-python3 - - name: start DISPLAY - run: | - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 - export DISPLAY=:1.0 - sleep 3 - - name: test IDE run: | - export PATH="$HOME/arduino_ide:$PATH" - which arduino + export PATH="$ARDUINO_DIRECTORIES_DATA:$PATH" + which arduino-cli - name: copy code run: | mkdir -p $HOME/Arduino/libraries/ cp -r $GITHUB_WORKSPACE $HOME/Arduino/libraries/arduinoWebSockets - - name: config IDE - run: | - set +x - export DISPLAY=:1.0 - export PATH="$HOME/arduino_ide:$PATH" - arduino --board $BOARD --save-prefs - arduino --pref update.check=false --pref build.verbose=false --pref cache.enable=true --pref compiler.cache_core=true --pref compiler.warning_level=default --save-prefs - arduino --get-pref sketchbook.path - arduino --get-pref - - name: build example timeout-minutes: 20 run: | @@ -179,7 +161,7 @@ jobs: export PATH="$HOME/arduino_ide:$PATH" source $GITHUB_WORKSPACE/travis/common.sh cd $GITHUB_WORKSPACE - build_sketch arduino $SKETCH + build_sketch_cli "$SKETCH" "$BOARD" done: needs: [prepare_ide, prepare_example_json, build, check_version_files] diff --git a/src/SocketIOclient.h b/src/SocketIOclient.h index dd78f815..d607401c 100644 --- a/src/SocketIOclient.h +++ b/src/SocketIOclient.h @@ -61,7 +61,7 @@ class SocketIOclient : protected WebSocketsClient { #endif #endif bool isConnected(void); - + void onEvent(SocketIOclientEvent cbEvent); void disconnect(void); diff --git a/src/WebSockets.cpp b/src/WebSockets.cpp index 22352fc2..694aec2b 100644 --- a/src/WebSockets.cpp +++ b/src/WebSockets.cpp @@ -571,7 +571,7 @@ String WebSockets::acceptKey(String & clientKey) { */ String WebSockets::base64_encode(uint8_t * data, size_t length) { size_t size = ((length * 1.6f) + 1); - size = std::max(size, (size_t) 5); //minimum buffer size + size = std::max(size, (size_t)5); // minimum buffer size char * buffer = (char *)malloc(size); if(buffer) { base64_encodestate _state; diff --git a/travis/common.sh b/travis/common.sh index 2754bdc6..3b2d3451 100644 --- a/travis/common.sh +++ b/travis/common.sh @@ -29,6 +29,22 @@ function build_sketches() done } +function build_sketch_cli() +{ + local sketch=$1 + local board=$2 + arduino-cli --log --log-level info compile -b "$board" "$sketch" + if [ $result -ne 0 ]; then + echo "Build failed ($sketch) build verbose..." + arduino-cli --log --log-level debug compile -b "$board" "$sketch" + result=$? + fi + if [ $result -ne 0 ]; then + echo "Build failed ($1) $sketch" + return $result + fi +} + function build_sketch() { local arduino=$1 @@ -88,11 +104,19 @@ function get_sketches_json_matrix() done } +function get_core_cli() { + arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json,https://espressif.github.io/arduino-esp32/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json + arduino-cli core install esp8266:esp8266 + arduino-cli core install esp32:esp32 + arduino-cli core install arduino:mbed_rp2040 +} + function get_core() { echo Setup core for $1 - cd $HOME/arduino_ide/hardware + mkdir -p $HOME/arduino_ide/packages/hardware + cd $HOME/arduino_ide/packages/hardware if [ "$1" = "esp8266" ] ; then mkdir esp8266com From 92480b898728abf74effdfbb380735af7399802c Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:00:16 +0100 Subject: [PATCH 03/15] IDE_VERSION --> CLI_VERSION --- .github/workflows/main.yml | 14 +++++++------- travis/common.sh | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0724e14c..ae0a7d8d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -55,9 +55,9 @@ jobs: strategy: fail-fast: false matrix: - IDE_VERSION: [0.35.0] + CLI_VERSION: [0.35.0] env: - IDE_VERSION: ${{ matrix.IDE_VERSION }} + CLI_VERSION: ${{ matrix.CLI_VERSION }} ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide steps: @@ -75,13 +75,13 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.IDE_VERSION }}-cli + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.CLI_VERSION }}-cli - name: download IDE if: steps.cache_all.outputs.cache-hit != 'true' run: | - wget https://github.com/arduino/arduino-cli/releases/download/v$IDE_VERSION/arduino-cli$IDE_VERSION_Linux_64bit.tar.gz -q - tar xf arduino-cli_$IDE_VERSION_Linux_64bit.tar.gz + wget https://github.com/arduino/arduino-cli/releases/download/v${CLI_VERSION}/arduino-cli${CLI_VERSION}_Linux_64bit.tar.gz -q + tar xf arduino-cli_${CLI_VERSION}_Linux_64bit.tar.gz mkdir -p $ARDUINO_DIRECTORIES_DATA mv arduino-cli $ARDUINO_DIRECTORIES_DATA/ @@ -110,7 +110,7 @@ jobs: env: CPU: ${{ matrix.cpu }} BOARD: ${{ matrix.board }} - IDE_VERSION: ${{ matrix.ideversion }} + CLI_VERSION: ${{ matrix.cliversion }} SKETCH: ${{ matrix.sketch }} ARDUINO_DIRECTORIES_DATA: /home/runner/arduino_ide @@ -134,7 +134,7 @@ jobs: path: | /home/runner/arduino_ide /home/runner/Arduino - key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.ideversion }}-cli + key: ${{ runner.os }}-${{ steps.get-date.outputs.date }}-${{ matrix.cliversion }}-cli - name: install python serial if: matrix.cpu == 'esp32' diff --git a/travis/common.sh b/travis/common.sh index 3b2d3451..ffe3d2f6 100644 --- a/travis/common.sh +++ b/travis/common.sh @@ -88,7 +88,7 @@ function get_sketches_json_matrix() local arduino=$1 local srcpath=$2 local platform=$3 - local ideversion=$4 + local cliversion=$4 local board=$5 local sketches=($(find $srcpath -name *.ino)) for sketch in "${sketches[@]}" ; do @@ -97,7 +97,7 @@ function get_sketches_json_matrix() if [[ -f "$sketchdir/.$platform.skip" ]]; then continue fi - echo -en "{\"name\":\"$sketchname\",\"board\":\"$board\",\"ideversion\":\"$ideversion\",\"cpu\":\"$platform\",\"sketch\":\"$sketch\"}" + echo -en "{\"name\":\"$sketchname\",\"board\":\"$board\",\"cliversion\":\"$cliversion\",\"cpu\":\"$platform\",\"sketch\":\"$sketch\"}" if [[ $sketch != ${sketches[-1]} ]] ; then echo -en "," fi From 437c0252f1a1c250e4cb433f37ac1066024b3d8a Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:01:53 +0100 Subject: [PATCH 04/15] fix cli download URL --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ae0a7d8d..f4bc5dea 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -80,7 +80,7 @@ jobs: - name: download IDE if: steps.cache_all.outputs.cache-hit != 'true' run: | - wget https://github.com/arduino/arduino-cli/releases/download/v${CLI_VERSION}/arduino-cli${CLI_VERSION}_Linux_64bit.tar.gz -q + wget https://github.com/arduino/arduino-cli/releases/download/v${CLI_VERSION}/arduino-cli_${CLI_VERSION}_Linux_64bit.tar.gz -q tar xf arduino-cli_${CLI_VERSION}_Linux_64bit.tar.gz mkdir -p $ARDUINO_DIRECTORIES_DATA mv arduino-cli $ARDUINO_DIRECTORIES_DATA/ From 241c73a8060c8b72839e9cff7eca042b32d2c4de Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:06:30 +0100 Subject: [PATCH 05/15] use ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS env for setting board URLs --- travis/common.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/travis/common.sh b/travis/common.sh index ffe3d2f6..84ed1576 100644 --- a/travis/common.sh +++ b/travis/common.sh @@ -105,7 +105,8 @@ function get_sketches_json_matrix() } function get_core_cli() { - arduino-cli core update-index --additional-urls https://arduino.esp8266.com/stable/package_esp8266com_index.json,https://espressif.github.io/arduino-esp32/package_esp32_index.json,https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json + export ARDUINO_BOARD_MANAGER_ADDITIONAL_URLS="https://arduino.esp8266.com/stable/package_esp8266com_index.json https://espressif.github.io/arduino-esp32/package_esp32_index.json https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json" + arduino-cli core update-index arduino-cli core install esp8266:esp8266 arduino-cli core install esp32:esp32 arduino-cli core install arduino:mbed_rp2040 From 3352c833b8a11c2324ca7e685b043c9353a1edbf Mon Sep 17 00:00:00 2001 From: patrick Date: Wed, 22 Nov 2023 20:35:40 -0500 Subject: [PATCH 06/15] - 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 --- src/WebSocketsServer.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/WebSocketsServer.cpp b/src/WebSocketsServer.cpp index 79a52ce8..dc1a4946 100644 --- a/src/WebSocketsServer.cpp +++ b/src/WebSocketsServer.cpp @@ -65,6 +65,7 @@ WebSocketsServerCore::~WebSocketsServerCore() { } WebSocketsServer::~WebSocketsServer() { + delete _server; } /** @@ -428,8 +429,16 @@ WSclient_t * WebSocketsServerCore::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclien for(uint8_t i = 0; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) { client = &_clients[i]; + // look for match to existing socket before creating a new one + if (clientIsConnected(client)) + { + // Check to see if it is the same socket - if so, return it + if (client->tcp->getSocketNumber() == TCPclient->getSocketNumber()) + { + return client; + } + } else { // state is not connected or tcp connection is lost - if(!clientIsConnected(client)) { client->tcp = TCPclient; #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) From 4acc33589a1bbf145203a948e4737af89030d01d Mon Sep 17 00:00:00 2001 From: Shreyansh Jain Date: Sun, 6 Aug 2023 12:24:55 +0200 Subject: [PATCH 07/15] added option arguments in socket io being, for pingInterval, pongTimeout, and disconnectTimeoutCount --- src/SocketIOclient.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/SocketIOclient.cpp b/src/SocketIOclient.cpp index 25ee070c..b691691e 100644 --- a/src/SocketIOclient.cpp +++ b/src/SocketIOclient.cpp @@ -15,39 +15,39 @@ SocketIOclient::SocketIOclient() { SocketIOclient::~SocketIOclient() { } -void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol) { +void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIO(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::begin(String host, uint16_t port, String url, String protocol) { +void SocketIOclient::begin(String host, uint16_t port, String url, String protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIO(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(HAS_SSL) -void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol) { +void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol) { +void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol. uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(SSL_BARESSL) -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); - WebSocketsClient::enableHeartbeat(60 * 1000, 90 * 1000, 5); + WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } From aed167bee075422469820ce079aa00b32b714696 Mon Sep 17 00:00:00 2001 From: Shreyansh Jain Date: Sun, 6 Aug 2023 12:24:55 +0200 Subject: [PATCH 08/15] updated the header file for the same changes --- src/SocketIOclient.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/SocketIOclient.h b/src/SocketIOclient.h index d607401c..e33a6fd6 100644 --- a/src/SocketIOclient.h +++ b/src/SocketIOclient.h @@ -47,15 +47,15 @@ class SocketIOclient : protected WebSocketsClient { SocketIOclient(void); virtual ~SocketIOclient(void); - void begin(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino"); - void begin(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino"); + void begin(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void begin(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); #ifdef HAS_SSL - void beginSSL(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino"); - void beginSSL(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino"); + void beginSSL(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void beginSSL(String host, uint16_t port, String url = "/socket.io/?EIO=3", String protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); #ifndef SSL_AXTLS - void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * CA_cert = NULL, const char * protocol = "arduino"); - void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", BearSSL::X509List * CA_cert = NULL, const char * protocol = "arduino"); + void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", const char * CA_cert = NULL, const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); + void beginSSLWithCA(const char * host, uint16_t port, const char * url = "/socket.io/?EIO=3", BearSSL::X509List * CA_cert = NULL, const char * protocol = "arduino", uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5); void setSSLClientCertKey(const char * clientCert = NULL, const char * clientPrivateKey = NULL); void setSSLClientCertKey(BearSSL::X509List * clientCert = NULL, BearSSL::PrivateKey * clientPrivateKey = NULL); #endif From 3b143bc6f36456756361ba2e4c8820cca729eb21 Mon Sep 17 00:00:00 2001 From: Lukas Runge Date: Sun, 6 Aug 2023 12:24:55 +0200 Subject: [PATCH 09/15] =?UTF-8?q?=F0=9F=90=9B=E2=9E=96=20removed=20default?= =?UTF-8?q?=20values=20from=20*.cpp=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SocketIOclient.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/SocketIOclient.cpp b/src/SocketIOclient.cpp index b691691e..93f89986 100644 --- a/src/SocketIOclient.cpp +++ b/src/SocketIOclient.cpp @@ -15,37 +15,37 @@ SocketIOclient::SocketIOclient() { SocketIOclient::~SocketIOclient() { } -void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::begin(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIO(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::begin(String host, uint16_t port, String url, String protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::begin(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIO(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(HAS_SSL) -void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol. uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(SSL_BARESSL) -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval = 60 * 1000, uint32_t pongTimeout = 90 * 1000, uint8_t disconnectTimeoutCount = 5) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); From 313f2e0170a663d174f8ba85b561d13d407f681a Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:26:26 +0100 Subject: [PATCH 10/15] update actions/cache@v3 --- .github/workflows/main.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f4bc5dea..2bd0aaa2 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -69,7 +69,7 @@ jobs: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - - uses: actions/cache@v2 + - uses: actions/cache@v3 id: cache_all with: path: | @@ -128,7 +128,7 @@ jobs: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - - uses: actions/cache@v2 + - uses: actions/cache@v3 id: cache_all with: path: | @@ -157,7 +157,6 @@ jobs: timeout-minutes: 20 run: | set -ex - export DISPLAY=:1.0 export PATH="$HOME/arduino_ide:$PATH" source $GITHUB_WORKSPACE/travis/common.sh cd $GITHUB_WORKSPACE From be9fd8e2679c680565b97df0aa4fb766cb509d51 Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:26:59 +0100 Subject: [PATCH 11/15] fix getSocketNumber for ESP --- src/WebSocketsServer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/WebSocketsServer.cpp b/src/WebSocketsServer.cpp index dc1a4946..4a0b4138 100644 --- a/src/WebSocketsServer.cpp +++ b/src/WebSocketsServer.cpp @@ -430,15 +430,15 @@ WSclient_t * WebSocketsServerCore::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclien client = &_clients[i]; // look for match to existing socket before creating a new one - if (clientIsConnected(client)) - { - // Check to see if it is the same socket - if so, return it - if (client->tcp->getSocketNumber() == TCPclient->getSocketNumber()) - { - return client; - } + if(clientIsConnected(client)) { +#if(WEBSOCKETS_NETWORK_TYPE == NETWORK_W5100) + // Check to see if it is the same socket - if so, return it + if(client->tcp->getSocketNumber() == TCPclient->getSocketNumber()) { + return client; + } +#endif } else { - // state is not connected or tcp connection is lost + // state is not connected or tcp connection is lost client->tcp = TCPclient; #if(WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP32) From 6a26f74f958b7d31d71442d59e376a98cb53bedd Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 15:27:49 +0100 Subject: [PATCH 12/15] code style --- src/SocketIOclient.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/SocketIOclient.cpp b/src/SocketIOclient.cpp index 93f89986..1533316f 100644 --- a/src/SocketIOclient.cpp +++ b/src/SocketIOclient.cpp @@ -27,25 +27,25 @@ void SocketIOclient::begin(String host, uint16_t port, String url, String protoc initClient(); } #if defined(HAS_SSL) -void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { +void SocketIOclient::beginSSL(const char * host, uint16_t port, const char * url, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { +void SocketIOclient::beginSSL(String host, uint16_t port, String url, String protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSL(host, port, url, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } #if defined(SSL_BARESSL) -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, const char * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); } -void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { +void SocketIOclient::beginSSLWithCA(const char * host, uint16_t port, const char * url, BearSSL::X509List * CA_cert, const char * protocol, uint32_t pingInterval, uint32_t pongTimeout, uint8_t disconnectTimeoutCount) { WebSocketsClient::beginSocketIOSSLWithCA(host, port, url, CA_cert, protocol); WebSocketsClient::enableHeartbeat(pingInterval, pongTimeout, disconnectTimeoutCount); initClient(); From 503105a9fec1144755df0b5bee4b00444a602d57 Mon Sep 17 00:00:00 2001 From: Hasenradball Date: Fri, 5 Jan 2024 17:24:45 +0100 Subject: [PATCH 13/15] Remove compiler warnings (#854) * [Prevent unwanted Compiler Warnings]: Issue #772 --- src/WebSockets.cpp | 2 +- src/WebSocketsServer.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WebSockets.cpp b/src/WebSockets.cpp index 694aec2b..2d3a2547 100644 --- a/src/WebSockets.cpp +++ b/src/WebSockets.cpp @@ -750,7 +750,7 @@ void WebSockets::handleHBTimeout(WSclient_t * client) { client->pongTimeoutCount++; client->lastPing = millis() - client->pingInterval - 500; // force ping on the next run - DEBUG_WEBSOCKETS("[HBtimeout] pong TIMEOUT! lp=%d millis=%d pi=%d count=%d\n", client->lastPing, millis(), pi, client->pongTimeoutCount); + DEBUG_WEBSOCKETS("[HBtimeout] pong TIMEOUT! lp=%d millis=%lu pi=%d count=%d\n", client->lastPing, millis(), pi, client->pongTimeoutCount); if(client->disconnectTimeoutCount && client->pongTimeoutCount >= client->disconnectTimeoutCount) { DEBUG_WEBSOCKETS("[HBtimeout] count=%d, DISCONNECTING\n", client->pongTimeoutCount); diff --git a/src/WebSocketsServer.cpp b/src/WebSocketsServer.cpp index 4a0b4138..e11e1cf7 100644 --- a/src/WebSocketsServer.cpp +++ b/src/WebSocketsServer.cpp @@ -655,7 +655,7 @@ void WebSocketsServer::handleNewClients(void) { #endif // store new connection - WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->available()); + WEBSOCKETS_NETWORK_CLASS * tcpClient = new WEBSOCKETS_NETWORK_CLASS(_server->accept()); if(!tcpClient) { DEBUG_WEBSOCKETS("[WS-Client] creating Network class failed!"); return; From 8d193b176d9aa6eaeaa0a6dd150c4e61dc083738 Mon Sep 17 00:00:00 2001 From: Hasenradball Date: Fri, 5 Jan 2024 17:25:57 +0100 Subject: [PATCH 14/15] [Prevent unwanted Compiler Warnings]: Issue #772 - wrong format specifier in line 754 (#773) * [Prevent unwanted Compiler Warnings]: Issue #772 From 93707d455fff3c667aedd92b485276101f5e6eba Mon Sep 17 00:00:00 2001 From: Links2004 Date: Fri, 5 Jan 2024 17:28:16 +0100 Subject: [PATCH 15/15] fix build_sketch_cli result handling --- travis/common.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/travis/common.sh b/travis/common.sh index 84ed1576..53df57c8 100644 --- a/travis/common.sh +++ b/travis/common.sh @@ -34,6 +34,7 @@ function build_sketch_cli() local sketch=$1 local board=$2 arduino-cli --log --log-level info compile -b "$board" "$sketch" + result=$? if [ $result -ne 0 ]; then echo "Build failed ($sketch) build verbose..." arduino-cli --log --log-level debug compile -b "$board" "$sketch"