diff options
author | Herasym Oleh <oolleehh@gmail.com> | 2017-04-21 15:37:40 +0300 |
---|---|---|
committer | okozlovlux <okozlov@luxoft.com> | 2017-05-17 19:27:11 +0300 |
commit | c424760b8a089f507ee93f749f790ee9e594de88 (patch) | |
tree | 0ce7de8535da929b5db65e78a3ea1f1158260d44 /src/components/policy/policy_regular/src/policy_manager_impl.cc | |
parent | 9cb25e928fc2591554e997e1ed8d5f4eb553dbc7 (diff) | |
download | sdl_core-c424760b8a089f507ee93f749f790ee9e594de88.tar.gz |
Fix policy unexpected PTU
Diffstat (limited to 'src/components/policy/policy_regular/src/policy_manager_impl.cc')
-rw-r--r-- | src/components/policy/policy_regular/src/policy_manager_impl.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc index ac64118e28..5f28d4405f 100644 --- a/src/components/policy/policy_regular/src/policy_manager_impl.cc +++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc @@ -77,7 +77,10 @@ PolicyManagerImpl::PolicyManagerImpl() new timer::TimerTaskImpl<PolicyManagerImpl>( this, &PolicyManagerImpl::RetrySequence)) , ignition_check(true) - , retry_sequence_url_(0, 0, "") {} + , retry_sequence_url_(0, 0, "") + , wrong_ptu_update_received_(false) + , trigger_ptu_(false) { +} void PolicyManagerImpl::set_listener(PolicyListener* listener) { listener_ = listener; @@ -159,6 +162,7 @@ bool PolicyManagerImpl::LoadPT(const std::string& file, file_system::DeleteFile(file); if (!IsPTValid(pt_update, policy_table::PT_UPDATE)) { + wrong_ptu_update_received_ = true; update_status_manager_.OnWrongUpdateReceived(); return false; } @@ -298,7 +302,8 @@ void PolicyManagerImpl::StartPTExchange() { } if (update_status_manager_.IsUpdatePending() && update_required) { - update_status_manager_.ScheduleUpdate(); + if (trigger_ptu_) + update_status_manager_.ScheduleUpdate(); LOG4CXX_INFO(logger_, "Starting exchange skipped, since another exchange " "is in progress."); @@ -328,9 +333,12 @@ void PolicyManagerImpl::OnAppsSearchStarted() { update_status_manager_.OnAppsSearchStarted(); } -void PolicyManagerImpl::OnAppsSearchCompleted() { +void PolicyManagerImpl::OnAppsSearchCompleted(const bool trigger_ptu) { LOG4CXX_AUTO_TRACE(logger_); update_status_manager_.OnAppsSearchCompleted(); + + trigger_ptu_ = trigger_ptu; + if (update_status_manager_.IsUpdateRequired()) { StartPTExchange(); } @@ -848,7 +856,13 @@ void PolicyManagerImpl::OnUpdateStarted() { uint32_t update_timeout = TimeoutExchangeMSec(); LOG4CXX_DEBUG(logger_, "Update timeout will be set to (milisec): " << update_timeout); - update_status_manager_.OnUpdateSentOut(update_timeout); + + wrong_ptu_update_received_ = + !wrong_ptu_update_received_ && !update_status_manager_.IsUpdatePending(); + + if (wrong_ptu_update_received_) { + update_status_manager_.OnUpdateSentOut(update_timeout); + } cache_->SaveUpdateRequired(true); } |