diff --git a/src/WiFiServer.cpp b/src/WiFiServer.cpp index fa72ddca..f52d1c4b 100644 --- a/src/WiFiServer.cpp +++ b/src/WiFiServer.cpp @@ -74,6 +74,21 @@ uint8_t WiFiServer::begin(uint8_t opt) return 1; } +void WiFiServer::end() +{ + if (_socket != -1) { + for (SOCKET s = 0; s < TCP_SOCK_MAX; s++) { + if (WiFiSocket.hasParent(_socket, s)) { + WiFiSocket.close(s); + } + } + if (WiFiSocket.listening(_socket)) { + WiFiSocket.close(_socket); + _socket = -1; + } + } +} + WiFiClient WiFiServer::available(uint8_t* status) { if (status != NULL) { diff --git a/src/WiFiServer.h b/src/WiFiServer.h index 22ff743d..e92407ea 100644 --- a/src/WiFiServer.h +++ b/src/WiFiServer.h @@ -37,6 +37,7 @@ class WiFiServer : public Server { WiFiClient available(uint8_t* status = NULL); void begin(); uint8_t beginSSL(); + void end(); virtual size_t write(uint8_t); virtual size_t write(const uint8_t *buf, size_t size); uint8_t status();