File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -520,9 +520,17 @@ void HTTPConnection::loop() {
520
520
521
521
// Finally, after the handshake is done, we create the WebsocketHandler and change the internal state.
522
522
if (websocketRequested) {
523
- _wsHandler = ((WebsocketNode*)resolvedResource.getMatchingNode ())->newHandler ();
524
- _wsHandler->initialize (this ); // make websocket with this connection
525
- _connectionState = STATE_WEBSOCKET;
523
+ HTTPNode *node = resolvedResource.getMatchingNode ();
524
+
525
+ // Check for websocket request on non-websocket node:
526
+ if (node == nullptr || node->_nodeType != HTTPNodeType::WEBSOCKET) {
527
+ HTTPS_LOGW (" Websocket request on non-websocket node rejected" );
528
+ raiseError (404 , " Not Found" );
529
+ } else {
530
+ _wsHandler = ((WebsocketNode *) node)->newHandler ();
531
+ _wsHandler->initialize (this ); // make websocket with this connection
532
+ _connectionState = STATE_WEBSOCKET;
533
+ }
526
534
} else {
527
535
// Handling the request is done
528
536
HTTPS_LOGD (" Handler function done, request complete" );
You can’t perform that action at this time.
0 commit comments