From 44f5a4dbc8272bd236d6eb82bc70d71f19e622be Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Mon, 16 Jul 2018 20:08:27 +0200 Subject: [PATCH] Fix Client returning disconnected because of VFS errors --- libraries/WiFi/src/WiFiClient.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp index ddd9fd7c..845f2b4d 100644 --- a/libraries/WiFi/src/WiFiClient.cpp +++ b/libraries/WiFi/src/WiFiClient.cpp @@ -438,9 +438,23 @@ uint8_t WiFiClient::connected() if (_connected) { uint8_t dummy; int res = recv(fd(), &dummy, 0, MSG_DONTWAIT); - if (res <= 0 && errno != EWOULDBLOCK) { - _connected = false; - log_i("Disconnected: RES: %d, ERR: %d", res, errno); + switch (errno) { + case EWOULDBLOCK: + case ENOENT: //caused by vfs + _connected = true; + break; + case ENOTCONN: + case EPIPE: + case ECONNRESET: + case ECONNREFUSED: + case ECONNABORTED: + _connected = false; + log_d("Disconnected: RES: %d, ERR: %d", res, errno); + break; + default: + log_i("Unexpected: RES: %d, ERR: %d", res, errno); + _connected = true; + break; } } return _connected;