diff options
author | JackLivio <jack@livio.io> | 2020-02-17 13:05:54 -0500 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2020-02-17 13:05:54 -0500 |
commit | 86dea8793023f986c7c10d7f9e5b7a932d89a49a (patch) | |
tree | bf44b0d5b6bf6b6c78dd2d0602b67f05ebe2a17c /src/components/application_manager/src/rpc_handler_impl.cc | |
parent | 4310b2dfd5e1078df0df53138a73d49d000c9c62 (diff) | |
parent | ece258838a44a5461d718c5eeae380ad11a3769b (diff) | |
download | sdl_core-fix/3rd_party_build_issues.tar.gz |
Merge remote-tracking branch 'origin/develop' into fix/3rd_party_build_issuesfix/3rd_party_build_issues
Diffstat (limited to 'src/components/application_manager/src/rpc_handler_impl.cc')
-rw-r--r-- | src/components/application_manager/src/rpc_handler_impl.cc | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/components/application_manager/src/rpc_handler_impl.cc b/src/components/application_manager/src/rpc_handler_impl.cc index e8468e95cc..0a62bc8498 100644 --- a/src/components/application_manager/src/rpc_handler_impl.cc +++ b/src/components/application_manager/src/rpc_handler_impl.cc @@ -419,7 +419,7 @@ bool RPCHandlerImpl::ConvertMessageToSO( "Convertion result: " << result << " function id " << output[jhs::S_PARAMS][jhs::S_FUNCTION_ID].asInt()); - if (!hmi_so_factory().attachSchema(output, false)) { + if (!hmi_so_factory().attachSchema(output, true)) { LOG4CXX_WARN(logger_, "Failed to attach schema to object."); return false; } @@ -435,11 +435,7 @@ bool RPCHandlerImpl::ConvertMessageToSO( logger_, "Incorrect parameter from HMI - " << rpc::PrettyFormat(report)); - output.erase(strings::msg_params); - output[strings::params][hmi_response::code] = - hmi_apis::Common_Result::INVALID_DATA; - output[strings::msg_params][strings::info] = rpc::PrettyFormat(report); - return false; + return HandleWrongMessageType(output, report); } break; } @@ -492,6 +488,47 @@ bool RPCHandlerImpl::ConvertMessageToSO( return true; } +bool RPCHandlerImpl::HandleWrongMessageType( + smart_objects::SmartObject& output, rpc::ValidationReport report) const { + LOG4CXX_AUTO_TRACE(logger_); + switch (output[strings::params][strings::message_type].asInt()) { + case application_manager::MessageType::kNotification: { + LOG4CXX_ERROR(logger_, "Ignore wrong HMI notification"); + return false; + } + case application_manager::MessageType::kRequest: { + LOG4CXX_ERROR(logger_, "Received invalid data on HMI request"); + output.erase(strings::msg_params); + output[strings::params].erase(hmi_response::message); + output[strings::params][hmi_response::code] = + hmi_apis::Common_Result::INVALID_DATA; + output[strings::params][strings::message_type] = + MessageType::kErrorResponse; + output[strings::params][strings::error_msg] = rpc::PrettyFormat(report); + return true; + } + case application_manager::MessageType::kResponse: { + LOG4CXX_ERROR(logger_, "Received invalid data on HMI response"); + break; + } + case application_manager::MessageType::kUnknownType: { + LOG4CXX_ERROR(logger_, "Received unknown type data on HMI"); + break; + } + default: { + LOG4CXX_ERROR(logger_, "Received error response on HMI"); + break; + } + } + output.erase(strings::msg_params); + output[strings::params].erase(hmi_response::message); + output[strings::params][hmi_response::code] = + hmi_apis::Common_Result::GENERIC_ERROR; + output[strings::msg_params][strings::info] = + std::string("Invalid message received from vehicle"); + return true; +} + bool RPCHandlerImpl::ValidateRpcSO(smart_objects::SmartObject& message, utils::SemanticVersion& msg_version, rpc::ValidationReport& report_out, |