diff options
author | jacobkeeler <jacob.keeler@livioradio.com> | 2018-03-29 10:56:18 -0400 |
---|---|---|
committer | jacobkeeler <jacob.keeler@livioradio.com> | 2018-03-29 10:56:18 -0400 |
commit | d42cfe8434ade15c75c07427f53a1cc70cd79c49 (patch) | |
tree | ff9ff625b92ac74d3e8b8aa5a33dbba6450b358a | |
parent | 5472d8c79e71c8ab0e91f1fe313fa3459d74339b (diff) | |
download | sdl_core-d42cfe8434ade15c75c07427f53a1cc70cd79c49.tar.gz |
Fix EventDispatcher crash by rejecting duplicate correlation_ids
-rw-r--r-- | src/components/application_manager/src/request_controller.cc | 10 |
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) { |