mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00:00 
			
		
		
		
	fix uncatched exception in json message handling (#164)
This commit is contained in:
		| @@ -216,6 +216,9 @@ void JsonClientConnection::handleMessage(const std::string &messageString) | ||||
| { | ||||
| 	Json::Reader reader; | ||||
| 	Json::Value message; | ||||
| 	std::string errors; | ||||
|  	try | ||||
|  	{ | ||||
| 		if (!reader.parse(messageString, message, false)) | ||||
| 		{ | ||||
| 			sendErrorReply("Error while parsing json: " + reader.getFormattedErrorMessages()); | ||||
| @@ -223,7 +226,6 @@ void JsonClientConnection::handleMessage(const std::string &messageString) | ||||
| 		} | ||||
|  | ||||
| 		// check basic message | ||||
| 	std::string errors; | ||||
| 		if (!checkJson(message, ":schema", errors)) | ||||
| 		{ | ||||
| 			sendErrorReply("Error while validating json: " + errors); | ||||
| @@ -265,6 +267,13 @@ void JsonClientConnection::handleMessage(const std::string &messageString) | ||||
| 			handleComponentStateCommand(message); | ||||
| 		else | ||||
| 			handleNotImplemented(); | ||||
|  	} | ||||
|  	catch (std::exception& e) | ||||
|  	{ | ||||
|  		sendErrorReply("Error while processing incoming json message: " + std::string(e.what()) + " " + errors ); | ||||
|  		Warning(_log, "Error while processing incoming json message: %s (%s)", e.what(), errors.c_str()); | ||||
|  	} | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -948,7 +957,8 @@ bool JsonClientConnection::checkJson(const Json::Value & message, const QString | ||||
| 	Json::Value schemaJson; | ||||
| 	if (!jsonReader.parse(reinterpret_cast<const char *>(schemaData.data()), reinterpret_cast<const char *>(schemaData.data()) + schemaData.size(), schemaJson, false)) | ||||
| 	{ | ||||
| 		throw std::runtime_error("JSONCLIENT ERROR: Schema error: " + jsonReader.getFormattedErrorMessages()); | ||||
| 		errorMessage = "Schema error: " + jsonReader.getFormattedErrorMessages(); | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	// create schema checker | ||||
|   | ||||
		Reference in New Issue
	
	Block a user