diff --git a/src/EthernetClient.cpp b/src/EthernetClient.cpp index f02c486..349ffb6 100644 --- a/src/EthernetClient.cpp +++ b/src/EthernetClient.cpp @@ -9,12 +9,14 @@ extern "C" { #include "EthernetServer.h" #include "Dns.h" -EthernetClient::EthernetClient() { +EthernetClient::EthernetClient() + :_tcp_client(NULL) { } /* Deprecated constructor. Keeps compatibility with W5100 architecture sketches but sock is ignored. */ -EthernetClient::EthernetClient(uint8_t sock) { +EthernetClient::EthernetClient(uint8_t sock) + :_tcp_client(NULL) { UNUSED(sock); } @@ -181,7 +183,7 @@ uint8_t EthernetClient::status() { // EthernetServer::available() as the condition in an if-statement. EthernetClient::operator bool() { - return _tcp_client != NULL; + return (_tcp_client && (_tcp_client->state != TCP_CLOSING)); } bool EthernetClient::operator==(const EthernetClient& rhs) { diff --git a/src/EthernetServer.cpp b/src/EthernetServer.cpp index f5353d8..18ff147 100644 --- a/src/EthernetServer.cpp +++ b/src/EthernetServer.cpp @@ -9,6 +9,8 @@ extern "C" { EthernetServer::EthernetServer(uint16_t port) { _port = port; + _tcp_client[MAX_CLIENT] = {}; + _tcp_server = {}; } void EthernetServer::begin() diff --git a/src/EthernetServer.h b/src/EthernetServer.h index 317bf41..fb42c43 100644 --- a/src/EthernetServer.h +++ b/src/EthernetServer.h @@ -14,7 +14,7 @@ public Server { void accept(void); public: - EthernetServer(uint16_t); + EthernetServer(uint16_t port = 80); EthernetClient available(); virtual void begin(); virtual size_t write(uint8_t);