summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2019-03-18 16:28:21 -0400
committerGitHub <noreply@github.com>2019-03-18 16:28:21 -0400
commitfb88c1700b4c4ede7be876ad236c35cbdc2f2052 (patch)
treef28d4ebe7a00f76236e5582e2f7d0d2b076e284a
parent99c29ac9403d8a59565c6b28939384235ad19b0e (diff)
parenta7596bcecbacbeabfd862b247441e534c64130f7 (diff)
downloadsdl_core-fb88c1700b4c4ede7be876ad236c35cbdc2f2052.tar.gz
Merge pull request #2852 from smartdevicelink/fix/invalid_id_on_duplicate_cid_for_pass_through5.1.0_RC
Send Invalid ID on duplicate correlation_id
-rw-r--r--src/components/application_manager/include/application_manager/rpc_passing_handler.h2
-rw-r--r--src/components/application_manager/src/rpc_passing_handler.cc16
2 files changed, 15 insertions, 3 deletions
diff --git a/src/components/application_manager/include/application_manager/rpc_passing_handler.h b/src/components/application_manager/include/application_manager/rpc_passing_handler.h
index ab85b1374f..675d567820 100644
--- a/src/components/application_manager/include/application_manager/rpc_passing_handler.h
+++ b/src/components/application_manager/include/application_manager/rpc_passing_handler.h
@@ -82,7 +82,7 @@ class RPCPassingHandler {
* @brief Function to handle sending and receiving RPC Passing
* requests/responses
* @param rpc_message RPC message SmartObject
- * @return true if the request was forwarded, false otherwise
+ * @return true if the request was handled, false otherwise
*/
bool RPCPassThrough(smart_objects::SmartObject rpc_message);
diff --git a/src/components/application_manager/src/rpc_passing_handler.cc b/src/components/application_manager/src/rpc_passing_handler.cc
index 37b01a92f6..3e90b86663 100644
--- a/src/components/application_manager/src/rpc_passing_handler.cc
+++ b/src/components/application_manager/src/rpc_passing_handler.cc
@@ -118,8 +118,20 @@ bool RPCPassingHandler::RPCPassThrough(smart_objects::SmartObject rpc_message) {
PopulateRPCRequestQueue(rpc_message);
} else {
rpc_request_queue_lock_.Release();
- LOG4CXX_DEBUG(logger_, "Correlation id DOES exist in map. Continuing");
- return false;
+ LOG4CXX_DEBUG(logger_, "Correlation id DOES exist in map. Returning");
+ std::shared_ptr<smart_objects::SmartObject> response(
+ MessageHelper::CreateNegativeResponse(
+ rpc_message[strings::params][strings::connection_key].asInt(),
+ rpc_message[strings::params][strings::function_id].asInt(),
+ correlation_id,
+ mobile_apis::Result::INVALID_ID));
+
+ (*response)[strings::msg_params][strings::info] =
+ "Duplicate correlation_id";
+ app_manager_.GetRPCService().ManageMobileCommand(
+ response, commands::Command::SOURCE_SDL);
+
+ return true;
}
rpc_request_queue_lock_.Acquire();