summaryrefslogtreecommitdiff
path: root/src/components/policy/policy_regular/src/policy_manager_impl.cc
diff options
context:
space:
mode:
authorHerasym Oleh <oolleehh@gmail.com>2017-04-21 15:37:40 +0300
committerokozlovlux <okozlov@luxoft.com>2017-05-17 19:27:11 +0300
commitc424760b8a089f507ee93f749f790ee9e594de88 (patch)
tree0ce7de8535da929b5db65e78a3ea1f1158260d44 /src/components/policy/policy_regular/src/policy_manager_impl.cc
parent9cb25e928fc2591554e997e1ed8d5f4eb553dbc7 (diff)
downloadsdl_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.cc22
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);
}