try to improve

see: #23
This commit is contained in:
Markus Sattler
2015-12-05 11:43:03 +01:00
parent 92a63e9129
commit 7a22dad9d1
4 changed files with 28 additions and 16 deletions

View File

@ -254,7 +254,11 @@ void WebSockets::handleWebsocket(WSclient_t * client) {
} }
if(mask) { if(mask) {
client->tcp.read(maskKey, 4); if(!readWait(client, maskKey, 4)) {
//timeout
clientDisconnect(client, 1002);
return;
}
} }
if(payloadLen > 0) { if(payloadLen > 0) {

View File

@ -44,7 +44,7 @@
#endif #endif
#define WEBSOCKETS_MAX_DATA_SIZE (15*1024) #define WEBSOCKETS_MAX_DATA_SIZE (15*1024)
#define WEBSOCKETS_TCP_TIMEOUT (1000) #define WEBSOCKETS_TCP_TIMEOUT (1500)
typedef enum { typedef enum {
WSC_NOT_CONNECTED, WSC_NOT_CONNECTED,

View File

@ -218,13 +218,17 @@ void WebSocketsClient::clientDisconnect(WSclient_t * client) {
*/ */
bool WebSocketsClient::clientIsConnected(WSclient_t * client) { bool WebSocketsClient::clientIsConnected(WSclient_t * client) {
if(client->status != WSC_NOT_CONNECTED && client->tcp.connected()) { if(client->tcp.connected()) {
return true; if(client->status != WSC_NOT_CONNECTED) {
} return true;
}
if(client->status != WSC_NOT_CONNECTED) { } else {
// cleanup // client lost
clientDisconnect(&_client); if(client->status != WSC_NOT_CONNECTED) {
DEBUG_WEBSOCKETS("[WS-Client] connection lost.\n");
// do cleanup
clientDisconnect(client);
}
} }
return false; return false;
} }

View File

@ -302,13 +302,17 @@ void WebSocketsServer::clientDisconnect(WSclient_t * client) {
*/ */
bool WebSocketsServer::clientIsConnected(WSclient_t * client) { bool WebSocketsServer::clientIsConnected(WSclient_t * client) {
if(client->status != WSC_NOT_CONNECTED && client->tcp.connected()) { if(client->tcp.connected()) {
return true; if(client->status != WSC_NOT_CONNECTED) {
} return true;
}
if(client->status != WSC_NOT_CONNECTED) { } else {
// cleanup // client lost
clientDisconnect(client); if(client->status != WSC_NOT_CONNECTED) {
DEBUG_WEBSOCKETS("[WS-Server][%d] client connection lost.\n", client->num);
// do cleanup
clientDisconnect(client);
}
} }
return false; return false;
} }