Remote tcp disconnect not detected (#389)

* Add setNoDelay and getNoDelay to WiFiServer class

* Remote TCP disconnect not detected
This commit is contained in:
bbx10
2017-05-22 02:16:07 -10:00
committed by Me No Dev
parent 51a4432ca8
commit 06a76eebe8
3 changed files with 38 additions and 4 deletions

View File

@ -279,8 +279,28 @@ void WiFiClient::flush() {
uint8_t WiFiClient::connected()
{
uint8_t dummy = 0;
read(&dummy, 0);
if (_connected) {
uint8_t dummy;
int res = recv(fd(), &dummy, 0, MSG_DONTWAIT);
if (res <= 0) {
switch (errno) {
case ENOTCONN:
case EPIPE:
case ECONNRESET:
case ECONNREFUSED:
case ECONNABORTED:
_connected = false;
break;
default:
_connected = true;
break;
}
}
else {
// Should never happen since requested 0 bytes
_connected = true;
}
}
return _connected;
}