(websocket server) Handle programmer error when the server callback is not registered properly (fix #227)
This commit is contained in:
		| @@ -405,6 +405,11 @@ namespace ix | ||||
|         _onMessageCallback = callback; | ||||
|     } | ||||
|  | ||||
|     bool WebSocket::isOnMessageCallbackRegistered() const | ||||
|     { | ||||
|         return _onMessageCallback != nullptr; | ||||
|     } | ||||
|  | ||||
|     void WebSocket::setTrafficTrackerCallback(const OnTrafficTrackerCallback& callback) | ||||
|     { | ||||
|         _onTrafficTrackerCallback = callback; | ||||
|   | ||||
| @@ -84,6 +84,7 @@ namespace ix | ||||
|                    const std::string& reason = WebSocketCloseConstants::kNormalClosureMessage); | ||||
|  | ||||
|         void setOnMessageCallback(const OnMessageCallback& callback); | ||||
|         bool isOnMessageCallbackRegistered() const; | ||||
|         static void setTrafficTrackerCallback(const OnTrafficTrackerCallback& callback); | ||||
|         static void resetTrafficTrackerCallback(); | ||||
|  | ||||
|   | ||||
| @@ -86,6 +86,15 @@ namespace ix | ||||
|         if (_onConnectionCallback) | ||||
|         { | ||||
|             _onConnectionCallback(webSocket, connectionState, std::move(connectionInfo)); | ||||
|  | ||||
|             if (!webSocket->isOnMessageCallbackRegistered()) | ||||
|             { | ||||
|                 logError("WebSocketServer Application developer error: Server callback improperly " | ||||
|                          "registerered."); | ||||
|                 logError("Missing call to setOnMessageCallback inside setOnConnectionCallback."); | ||||
|                 connectionState->setTerminated(); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
|         else if (_onClientMessageCallback) | ||||
|         { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user