From 812753cdae6b913419588f436fcd64e712c2e474 Mon Sep 17 00:00:00 2001 From: Suwatchai K Date: Fri, 9 Jun 2023 23:56:46 +0700 Subject: [PATCH 1/3] Add support WiFiClientSecure TCP KeepAlive --- .../ESP8266WiFi/src/WiFiClientSecureBearSSL.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h b/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h index d78dad2972..130fc84d8e 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h @@ -357,6 +357,21 @@ class WiFiClientSecure : public WiFiClient { // consume bytes after use (see peekBuffer) virtual void peekConsume (size_t consume) override { return _ctx->peekConsume(consume); } + + void keepAlive(uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT) + { + _ctx->keepAlive(idle_sec, intv_sec, count); + } + + bool isKeepAliveEnabled() const { return _ctx->isKeepAliveEnabled(); }; + + uint16_t getKeepAliveIdle() const { return _ctx->getKeepAliveIdle(); }; + + uint16_t getKeepAliveInterval() const { return _ctx->getKeepAliveInterval(); }; + + uint8_t getKeepAliveCount() const { return _ctx->getKeepAliveCount(); }; + + void disableKeepAlive() { _ctx->disableKeepAlive(); }; private: std::shared_ptr _ctx; From d89a31cb903d2b3349a63792dd7f4fc47085f278 Mon Sep 17 00:00:00 2001 From: Suwatchai K Date: Sun, 11 Jun 2023 09:08:50 +0700 Subject: [PATCH 2/3] Make TCP keepalive and related functions virtual. --- libraries/ESP8266WiFi/src/WiFiClient.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClient.h b/libraries/ESP8266WiFi/src/WiFiClient.h index 41ec5d8547..711adb6204 100644 --- a/libraries/ESP8266WiFi/src/WiFiClient.h +++ b/libraries/ESP8266WiFi/src/WiFiClient.h @@ -107,12 +107,12 @@ class WiFiClient : public Client, public SList { static void stopAll(); static void stopAllExcept(WiFiClient * c); - void keepAlive (uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT); - bool isKeepAliveEnabled () const; - uint16_t getKeepAliveIdle () const; - uint16_t getKeepAliveInterval () const; - uint8_t getKeepAliveCount () const; - void disableKeepAlive () { keepAlive(0, 0, 0); } + virtual void keepAlive (uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT); + virtual bool isKeepAliveEnabled () const; + virtual uint16_t getKeepAliveIdle () const; + virtual uint16_t getKeepAliveInterval () const; + virtual uint8_t getKeepAliveCount () const; + virtual void disableKeepAlive () { keepAlive(0, 0, 0); } // default NoDelay=False (Nagle=True=!NoDelay) // Nagle is for shortly delaying outgoing data, to send less/bigger packets From 2950fd6ca4da400742883c7ba2cc481811f449af Mon Sep 17 00:00:00 2001 From: Suwatchai K Date: Sun, 11 Jun 2023 09:13:40 +0700 Subject: [PATCH 3/3] Make TCP keepalive and related functions override. --- libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h b/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h index 130fc84d8e..e0cb44928f 100644 --- a/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h +++ b/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h @@ -358,20 +358,20 @@ class WiFiClientSecure : public WiFiClient { // consume bytes after use (see peekBuffer) virtual void peekConsume (size_t consume) override { return _ctx->peekConsume(consume); } - void keepAlive(uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT) + void keepAlive(uint16_t idle_sec = TCP_DEFAULT_KEEPALIVE_IDLE_SEC, uint16_t intv_sec = TCP_DEFAULT_KEEPALIVE_INTERVAL_SEC, uint8_t count = TCP_DEFAULT_KEEPALIVE_COUNT) override { _ctx->keepAlive(idle_sec, intv_sec, count); } - bool isKeepAliveEnabled() const { return _ctx->isKeepAliveEnabled(); }; + bool isKeepAliveEnabled() const override { return _ctx->isKeepAliveEnabled(); }; - uint16_t getKeepAliveIdle() const { return _ctx->getKeepAliveIdle(); }; + uint16_t getKeepAliveIdle() const override { return _ctx->getKeepAliveIdle(); }; - uint16_t getKeepAliveInterval() const { return _ctx->getKeepAliveInterval(); }; + uint16_t getKeepAliveInterval() const override { return _ctx->getKeepAliveInterval(); }; - uint8_t getKeepAliveCount() const { return _ctx->getKeepAliveCount(); }; + uint8_t getKeepAliveCount() const override { return _ctx->getKeepAliveCount(); }; - void disableKeepAlive() { _ctx->disableKeepAlive(); }; + void disableKeepAlive() override { _ctx->disableKeepAlive(); }; private: std::shared_ptr _ctx;