From b2a994bbc218e42ddc51c3e58de12ebe3efe5b71 Mon Sep 17 00:00:00 2001 From: Juraj Andrassy Date: Sat, 2 Dec 2023 14:05:05 +0100 Subject: [PATCH] WiFiServer modernization --- libraries/WebServer/src/WebServerTemplate.h | 2 +- libraries/WiFi/examples/WiFiServer/WiFiServer.ino | 2 +- libraries/WiFi/src/WiFiServer.cpp | 8 ++++++++ libraries/WiFi/src/WiFiServer.h | 6 ++++-- libraries/WiFi/src/WiFiServerSecureBearSSL.h | 4 ++-- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libraries/WebServer/src/WebServerTemplate.h b/libraries/WebServer/src/WebServerTemplate.h index fa3180d89..de373e8c4 100644 --- a/libraries/WebServer/src/WebServerTemplate.h +++ b/libraries/WebServer/src/WebServerTemplate.h @@ -90,7 +90,7 @@ void WebServerTemplate::handleClient() { _currentClient = nullptr; } - _currentClient = new ClientType(_server.available()); + _currentClient = new ClientType(_server.accept()); if (!_currentClient) { if (_nullDelay) { delay(1); diff --git a/libraries/WiFi/examples/WiFiServer/WiFiServer.ino b/libraries/WiFi/examples/WiFiServer/WiFiServer.ino index 858d39878..588375605 100644 --- a/libraries/WiFi/examples/WiFiServer/WiFiServer.ino +++ b/libraries/WiFi/examples/WiFiServer/WiFiServer.ino @@ -34,7 +34,7 @@ void loop() { delay(1000); Serial.printf("--loop %d\n", ++i); delay(10); - WiFiClient client = server.available(); + WiFiClient client = server.accept(); if (!client) { return; } diff --git a/libraries/WiFi/src/WiFiServer.cpp b/libraries/WiFi/src/WiFiServer.cpp index 305606658..8ed7c1fe6 100644 --- a/libraries/WiFi/src/WiFiServer.cpp +++ b/libraries/WiFi/src/WiFiServer.cpp @@ -163,10 +163,18 @@ void WiFiServer::close() { _listen_pcb = nullptr; } +void WiFiServer::end() { + close(); +} + void WiFiServer::stop() { close(); } +WiFiServer::operator bool() { + return (status() != CLOSED); +} + template T* slist_append_tail(T* head, T* item) { if (!head) { diff --git a/libraries/WiFi/src/WiFiServer.h b/libraries/WiFi/src/WiFiServer.h index 78b3c6da2..1b4ddd288 100644 --- a/libraries/WiFi/src/WiFiServer.h +++ b/libraries/WiFi/src/WiFiServer.h @@ -75,10 +75,10 @@ class WiFiServer { public: WiFiServer(const IPAddress& addr, uint16_t port); - WiFiServer(uint16_t port); + WiFiServer(uint16_t port = 23); virtual ~WiFiServer() {} WiFiClient accept(); // https://www.arduino.cc/en/Reference/EthernetServerAccept - WiFiClient available(uint8_t* status = nullptr); + WiFiClient available(uint8_t* status = nullptr) __attribute__((deprecated("Use accept()."))); bool hasClient(); // hasClientData(): @@ -95,8 +95,10 @@ class WiFiServer { bool getNoDelay(); uint8_t status(); uint16_t port() const; + void end(); void close(); void stop(); + explicit operator bool(); using ClientType = WiFiClient; diff --git a/libraries/WiFi/src/WiFiServerSecureBearSSL.h b/libraries/WiFi/src/WiFiServerSecureBearSSL.h index 511ebd13d..d6c758747 100644 --- a/libraries/WiFi/src/WiFiServerSecureBearSSL.h +++ b/libraries/WiFi/src/WiFiServerSecureBearSSL.h @@ -31,7 +31,7 @@ class WiFiClientSecure; class WiFiServerSecure : public WiFiServer { public: WiFiServerSecure(IPAddress addr, uint16_t port); - WiFiServerSecure(uint16_t port); + WiFiServerSecure(uint16_t port = 22); WiFiServerSecure(const WiFiServerSecure &rhs); virtual ~WiFiServerSecure(); @@ -65,7 +65,7 @@ class WiFiServerSecure : public WiFiServer { // If awaiting connection available and authenticated (i.e. client cert), return it. WiFiClientSecure accept(); // https://www.arduino.cc/en/Reference/EthernetServerAccept - WiFiClientSecure available(uint8_t* status = nullptr); + WiFiClientSecure available(uint8_t* status = nullptr) __attribute__((deprecated("Use accept()."))); WiFiServerSecure& operator=(const WiFiServerSecure&) = default;