summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/include/policy/policy_regular/policy/policy_types.h11
-rw-r--r--src/components/policy/policy_external/include/policy/policy_types.h11
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc9
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc9
4 files changed, 30 insertions, 10 deletions
diff --git a/src/components/include/policy/policy_regular/policy/policy_types.h b/src/components/include/policy/policy_regular/policy/policy_types.h
index 3405cf30d6..4e482b0e20 100644
--- a/src/components/include/policy/policy_regular/policy/policy_types.h
+++ b/src/components/include/policy/policy_regular/policy/policy_types.h
@@ -314,17 +314,20 @@ struct MetaInfo {
};
/**
- * @brief The index of the application and the index of its URL
- * from the Endpoints vector that will be sent on the next
- * OnSystemRequest retry sequence
+ * @brief The index of the application, the index of its URL
+ * and the policy application id from the Endpoints vector
+ * that will be sent on the next OnSystemRequest retry sequence
*/
struct RetrySequenceURL {
int app_idx_;
int url_idx_;
- RetrySequenceURL(int app, int url) : app_idx_(app), url_idx_(url) {}
+ std::string policy_app_id_;
+ RetrySequenceURL(int app, int url, const std::string& app_id)
+ : app_idx_(app), url_idx_(url), policy_app_id_(app_id) {}
RetrySequenceURL() {
app_idx_ = 0;
url_idx_ = 0;
+ policy_app_id_ = "";
}
};
diff --git a/src/components/policy/policy_external/include/policy/policy_types.h b/src/components/policy/policy_external/include/policy/policy_types.h
index 94898b2556..021e837196 100644
--- a/src/components/policy/policy_external/include/policy/policy_types.h
+++ b/src/components/policy/policy_external/include/policy/policy_types.h
@@ -365,17 +365,20 @@ struct MetaInfo {
};
/**
- * @brief The index of the application and the index of its URL
- * from the Endpoints vector that will be sent on the next
- * OnSystemRequest retry sequence
+ * @brief The index of the application, the index of its URL
+ * and the policy application id from the Endpoints vector
+ * that will be sent on the next OnSystemRequest retry sequence
*/
struct RetrySequenceURL {
int app_idx_;
int url_idx_;
- RetrySequenceURL(int app, int url) : app_idx_(app), url_idx_(url) {}
+ std::string policy_app_id_;
+ RetrySequenceURL(int app, int url, const std::string& app_id)
+ : app_idx_(app), url_idx_(url), policy_app_id_(app_id) {}
RetrySequenceURL() {
app_idx_ = 0;
url_idx_ = 0;
+ policy_app_id_ = "";
}
}
diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc
index 3e1b28f5be..ad8ac881bd 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -1199,6 +1199,7 @@ AppIdURL PolicyManagerImpl::GetNextUpdateUrl(const EndpointUrls& urls) {
retry_sequence_url_.url_idx_ = next_app_url.second + 1;
retry_sequence_url_.app_idx_ = next_app_url.first;
+ retry_sequence_url_.policy_app_id_ = urls[next_app_url.first].app_id;
return next_app_url;
}
@@ -1207,8 +1208,14 @@ AppIdURL PolicyManagerImpl::RetrySequenceUrl(const struct RetrySequenceURL& rs,
const EndpointUrls& urls) const {
uint32_t url_idx = rs.url_idx_;
uint32_t app_idx = rs.app_idx_;
+ const std::string app_id = rs.policy_app_id_;
- if (url_idx >= urls[app_idx].url.size()) {
+ if (urls.size() <= app_idx) {
+ url_idx = 0;
+ app_idx = 0;
+ } else if (urls[app_idx].app_id != app_id) {
+ url_idx = 0;
+ } else if (url_idx >= urls[app_idx].url.size()) {
url_idx = 0;
if (++app_idx >= urls.size()) {
app_idx = 0;
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 2dc768dda0..926a9c5ab7 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -907,6 +907,7 @@ AppIdURL PolicyManagerImpl::GetNextUpdateUrl(const EndpointUrls& urls) {
retry_sequence_url_.url_idx_ = next_app_url.second + 1;
retry_sequence_url_.app_idx_ = next_app_url.first;
+ retry_sequence_url_.policy_app_id_ = urls[next_app_url.first].app_id;
return next_app_url;
}
@@ -915,8 +916,14 @@ AppIdURL PolicyManagerImpl::RetrySequenceUrl(const struct RetrySequenceURL& rs,
const EndpointUrls& urls) const {
uint32_t url_idx = rs.url_idx_;
uint32_t app_idx = rs.app_idx_;
+ const std::string app_id = rs.policy_app_id_;
- if (url_idx >= urls[app_idx].url.size()) {
+ if (urls.size() <= app_idx) {
+ url_idx = 0;
+ app_idx = 0;
+ } else if (urls[app_idx].app_id != app_id) {
+ url_idx = 0;
+ } else if (url_idx >= urls[app_idx].url.size()) {
url_idx = 0;
if (++app_idx >= urls.size()) {
app_idx = 0;