summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjacobkeeler <jacob.keeler@livioradio.com>2018-03-29 10:56:18 -0400
committerjacobkeeler <jacob.keeler@livioradio.com>2018-03-29 10:56:18 -0400
commitd42cfe8434ade15c75c07427f53a1cc70cd79c49 (patch)
treeff9ff625b92ac74d3e8b8aa5a33dbba6450b358a
parent5472d8c79e71c8ab0e91f1fe313fa3459d74339b (diff)
downloadsdl_core-d42cfe8434ade15c75c07427f53a1cc70cd79c49.tar.gz
Fix EventDispatcher crash by rejecting duplicate correlation_ids
-rw-r--r--src/components/application_manager/src/request_controller.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/components/application_manager/src/request_controller.cc b/src/components/application_manager/src/request_controller.cc
index 1b9bd7ffb9..a6d78f24de 100644
--- a/src/components/application_manager/src/request_controller.cc
+++ b/src/components/application_manager/src/request_controller.cc
@@ -474,7 +474,15 @@ void RequestController::Worker::threadMain() {
RequestInfoPtr request_info_ptr =
utils::MakeShared<MobileRequestInfo>(request_ptr, timeout_in_mseconds);
- request_controller_->waiting_for_response_.Add(request_info_ptr);
+ if (!request_controller_->waiting_for_response_.Add(request_info_ptr)) {
+ commands::CommandRequestImpl* cmd_request =
+ dynamic_cast<commands::CommandRequestImpl*>(request_ptr.get());
+ if (cmd_request != NULL) {
+ cmd_request->SendResponse(
+ false, mobile_apis::Result::INVALID_ID, "Duplicate correlation_id");
+ }
+ continue;
+ }
LOG4CXX_DEBUG(logger_, "timeout_in_mseconds " << timeout_in_mseconds);
if (0 != timeout_in_mseconds) {