Skip to content

Commit 4afc43a

Browse files
authored
Update HTTPConnection.cpp fhessel#106 Possible Crash Fix
Prevent crash on WebSocket request to non-WebSocket node. fhessel#106
1 parent de1876c commit 4afc43a

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/HTTPConnection.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -519,9 +519,17 @@ void HTTPConnection::loop() {
519519

520520
// Finally, after the handshake is done, we create the WebsocketHandler and change the internal state.
521521
if(websocketRequested) {
522-
_wsHandler = ((WebsocketNode*)resolvedResource.getMatchingNode())->newHandler();
523-
_wsHandler->initialize(this); // make websocket with this connection
524-
_connectionState = STATE_WEBSOCKET;
522+
HTTPNode *node = resolvedResource.getMatchingNode();
523+
524+
// Check for websocket request on non-websocket node:
525+
if (node == nullptr || node->_nodeType != HTTPNodeType::WEBSOCKET) {
526+
HTTPS_LOGW("Websocket request on non-websocket node rejected");
527+
raiseError(404, "Not Found");
528+
} else {
529+
_wsHandler = ((WebsocketNode *) node)->newHandler();
530+
_wsHandler->initialize(this); // make websocket with this connection
531+
_connectionState = STATE_WEBSOCKET;
532+
}
525533
} else {
526534
// Handling the request is done
527535
HTTPS_LOGD("Handler function done, request complete");

0 commit comments

Comments
 (0)