From 7e5c64a5735b107e9d0a0c50d0399dccfa253f8d Mon Sep 17 00:00:00 2001 From: joe Date: Thu, 9 Jun 2016 19:48:38 +0100 Subject: [PATCH] mandatoryHttpHeaderCount fix --- .../WebSocketServerHttpHeaderValidation.ino | 3 ++- src/WebSocketsServer.cpp | 8 +++++--- src/WebSocketsServer.h | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/examples/WebSocketServer/WebSocketServerHttpHeaderValidation.ino b/examples/WebSocketServer/WebSocketServerHttpHeaderValidation.ino index ecbc739..da58fa3 100644 --- a/examples/WebSocketServer/WebSocketServerHttpHeaderValidation.ino +++ b/examples/WebSocketServer/WebSocketServerHttpHeaderValidation.ino @@ -75,7 +75,8 @@ void setup() { //connecting clients must supply a valid session cookie at websocket upgrade handshake negotiation time const char * headerkeys[] = { "Cookie" }; - webSocket.onValidateHttpHeader(validateHttpHeader, headerkeys); + size_t headerKeyCount = sizeof(headerkeys) / sizeof(char*); + webSocket.onValidateHttpHeader(validateHttpHeader, headerkeys, headerKeyCount); webSocket.begin(); } diff --git a/src/WebSocketsServer.cpp b/src/WebSocketsServer.cpp index c2457bf..53641d2 100644 --- a/src/WebSocketsServer.cpp +++ b/src/WebSocketsServer.cpp @@ -129,18 +129,20 @@ void WebSocketsServer::onEvent(WebSocketServerEvent cbEvent) { /* * Sets the custom http header validator function * @param httpHeaderValidationFunc WebSocketServerHttpHeaderValFunc ///< pointer to the custom http header validation function - * @param mandatoryHttpHeaders const char* ///< the array of named http headers considered to be mandatory / must be present in order for websocket upgrade to succeed + * @param mandatoryHttpHeaders[] const char* ///< the array of named http headers considered to be mandatory / must be present in order for websocket upgrade to succeed + * @param mandatoryHttpHeaderCount size_t ///< the number of items in the mandatoryHttpHeaders array */ void WebSocketsServer::onValidateHttpHeader( WebSocketServerHttpHeaderValFunc validationFunc, - const char* mandatoryHttpHeaders[]) + const char* mandatoryHttpHeaders[], + size_t mandatoryHttpHeaderCount) { _httpHeaderValidationFunc = validationFunc; if (_mandatoryHttpHeaders) delete[] _mandatoryHttpHeaders; - _mandatoryHttpHeaderCount = (sizeof(mandatoryHttpHeaders) / sizeof(char*)); + _mandatoryHttpHeaderCount = mandatoryHttpHeaderCount; _mandatoryHttpHeaders = new String[_mandatoryHttpHeaderCount]; for (size_t i = 0; i < _mandatoryHttpHeaderCount; i++) { diff --git a/src/WebSocketsServer.h b/src/WebSocketsServer.h index d03f840..7a93c0e 100644 --- a/src/WebSocketsServer.h +++ b/src/WebSocketsServer.h @@ -57,7 +57,10 @@ public: #endif void onEvent(WebSocketServerEvent cbEvent); - void onValidateHttpHeader(WebSocketServerHttpHeaderValFunc validationFunc, const char* mandatoryHttpHeaders[]); + void onValidateHttpHeader( + WebSocketServerHttpHeaderValFunc validationFunc, + const char* mandatoryHttpHeaders[], + size_t mandatoryHttpHeaderCount); bool sendTXT(uint8_t num, uint8_t * payload, size_t length = 0, bool headerToPayload = false);