update_engine: Reset forced update flag before sending Omaha ping
Lack of resetting the forced update flag causes
InteractiveUpdatePolicyImpl to always return true for (non-)interactive
updates and this can cause the update check to fall into an infinite
loop because the policy will never reach to
NextUpdateCheckTimePolicyImpl:
CheckForUpdate -> ScheduleUpdates -> OnUpdateScheduled -> Update ->
PingOmaha -> ScheduleUpdates
BUG=chromium:960828
TEST=unitest
TEST=updated device using this flow:
- update_engine_client --interactive=false --update
- wait till the state changed to wait_reboot
- update_engine_client --interactive=false --update
and no infinite loop was entered.
Change-Id: Ie8f8308d8af79f56cd71324bcb8679897f6823e7
Reviewed-on: https://chromium-review.googlesource.com/1666252
Tested-by: Amin Hassani <ahassani@chromium.org>
Commit-Ready: Amin Hassani <ahassani@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
diff --git a/update_attempter.h b/update_attempter.h
index 59c9686..c429076 100644
--- a/update_attempter.h
+++ b/update_attempter.h
@@ -417,6 +417,9 @@
// will only be reported for enterprise enrolled devices.
void ReportTimeToUpdateAppliedMetric();
+ // Resets interactivity and forced update flags.
+ void ResetInteractivityFlags();
+
// Last status notification timestamp used for throttling. Use monotonic
// TimeTicks to ensure that notifications are sent even if the system clock is
// set back in the middle of an update.