From e185668a97d8402e4ab7827ae0e7932ee707e790 Mon Sep 17 00:00:00 2001 From: Tobias Gessler Date: Sat, 12 Sep 2020 17:20:03 +0200 Subject: [PATCH] header response timeout added --- src/WebSocketsClient.cpp | 8 ++++++++ src/WebSocketsClient.h | 1 + 2 files changed, 9 insertions(+) diff --git a/src/WebSocketsClient.cpp b/src/WebSocketsClient.cpp index 967bc9d..64b3f64 100644 --- a/src/WebSocketsClient.cpp +++ b/src/WebSocketsClient.cpp @@ -85,6 +85,7 @@ void WebSocketsClient::begin(const char * host, uint16_t port, const char * url, #endif _lastConnectionFail = 0; + _lastHeaderSent = 0; } void WebSocketsClient::begin(String host, uint16_t port, String url, String protocol) { @@ -490,6 +491,12 @@ bool WebSocketsClient::clientIsConnected(WSclient_t * client) { * Handel incomming data from Client */ void WebSocketsClient::handleClientData(void) { + if(_client.status == WSC_HEADER && _lastHeaderSent + WEBSOCKETS_TCP_TIMEOUT < millis()) { + DEBUG_WEBSOCKETS("[WS-Client][handleClientData] header response timeout.. disconnecting!\n"); + clientDisconnect(&_client); + WEBSOCKETS_YIELD(); + return; + } int len = _client.tcp->available(); if(len > 0) { switch(_client.status) { @@ -598,6 +605,7 @@ void WebSocketsClient::sendHeader(WSclient_t * client) { #endif DEBUG_WEBSOCKETS("[WS-Client][sendHeader] sending header... Done (%luus).\n", (micros() - start)); + _lastHeaderSent = millis(); } /** diff --git a/src/WebSocketsClient.h b/src/WebSocketsClient.h index 0f51c94..5069875 100644 --- a/src/WebSocketsClient.h +++ b/src/WebSocketsClient.h @@ -107,6 +107,7 @@ class WebSocketsClient : protected WebSockets { unsigned long _lastConnectionFail; unsigned long _reconnectInterval; + unsigned long _lastHeaderSent; void messageReceived(WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool fin);