From c3baee9f63f7876bb30d128ee6e59cc0266312a9 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Mon, 15 Jun 2009 20:11:13 +0000 Subject: Fixing Client::connected() and Client::status() to return reasonable values when the Client isn't associated with a valid socket: issue #34. --- libraries/Ethernet/Client.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'libraries') diff --git a/libraries/Ethernet/Client.cpp b/libraries/Ethernet/Client.cpp index ebbb08d..0511c7b 100644 --- a/libraries/Ethernet/Client.cpp +++ b/libraries/Ethernet/Client.cpp @@ -113,13 +113,21 @@ void Client::stop() { } uint8_t Client::connected() { - uint8_t s = status(); - return !(s == SOCK_LISTEN || s == SOCK_CLOSED || s == SOCK_FIN_WAIT || - (s == SOCK_CLOSE_WAIT && !available())); + if (_sock == 255) { + return 0; + } else { + uint8_t s = status(); + return !(s == SOCK_LISTEN || s == SOCK_CLOSED || s == SOCK_FIN_WAIT || + (s == SOCK_CLOSE_WAIT && !available())); + } } uint8_t Client::status() { - return getSn_SR(_sock); + if (_sock == 255) { + return SOCK_CLOSED; + } else { + return getSn_SR(_sock); + } } // the next three functions are a hack so we can compare the client returned -- cgit v1.2.3-18-g5258