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

@ -45,8 +45,11 @@ WiFiClient WiFiServer::available(){
int client_sock = accept(sockfd, (struct sockaddr *)&_client, (socklen_t*)&cs);
if(client_sock >= 0){
int val = 1;
if(setsockopt(client_sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&val, sizeof(int)) == ESP_OK)
return WiFiClient(client_sock);
if(setsockopt(client_sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&val, sizeof(int)) == ESP_OK) {
val = _noDelay;
if(setsockopt(client_sock, IPPROTO_TCP, TCP_NODELAY, (char*)&val, sizeof(int)) == ESP_OK)
return WiFiClient(client_sock);
}
}
return WiFiClient();
}
@ -69,6 +72,14 @@ void WiFiServer::begin(){
_listening = true;
}
void WiFiServer::setNoDelay(bool nodelay) {
_noDelay = nodelay;
}
bool WiFiServer::getNoDelay() {
return _noDelay;
}
void WiFiServer::end(){
close(sockfd);
sockfd = -1;