| Index: update_attempter.cc
|
| diff --git a/update_attempter.cc b/update_attempter.cc
|
| index 7873166551ec5bf7d2961ed391f03aa9c9336ee4..b0c470bc4872d1eb2ad419e9584f5ee573488af3 100644
|
| --- a/update_attempter.cc
|
| +++ b/update_attempter.cc
|
| @@ -35,6 +35,21 @@ using std::vector;
|
|
|
| namespace chromeos_update_engine {
|
|
|
| +namespace {
|
| +
|
| +const int kTimeoutOnce = 7 * 60; // at 7 minutes
|
| +const int kTimeoutPeriodic = 45 * 60; // every 45 minutes
|
| +const int kTimeoutFuzz = 10 * 60; // +/- 5 minutes
|
| +
|
| +gboolean CheckForUpdatePeriodically(void* arg) {
|
| + UpdateAttempter* update_attempter = reinterpret_cast<UpdateAttempter*>(arg);
|
| + update_attempter->Update("", "");
|
| + update_attempter->SchedulePeriodicUpdateCheck(kTimeoutPeriodic);
|
| + return FALSE; // Don't run again.
|
| +}
|
| +
|
| +} // namespace {}
|
| +
|
| const char* kUpdateCompletedMarker = "/tmp/update_engine_autoupdate_completed";
|
|
|
| const char* UpdateStatusToString(UpdateStatus status) {
|
| @@ -411,6 +426,27 @@ bool UpdateAttempter::ScheduleErrorEventAction() {
|
| return true;
|
| }
|
|
|
| +void UpdateAttempter::InitiatePeriodicUpdateChecks() {
|
| + if (!utils::IsOfficialBuild()) {
|
| + LOG(WARNING) << "Non-official build: periodic update checks disabled.";
|
| + return;
|
| + }
|
| + if (utils::IsRemovableDevice(utils::RootDevice(utils::BootDevice()))) {
|
| + LOG(WARNING) << "Removable device boot: periodic update checks disabled.";
|
| + return;
|
| + }
|
| + // Kick off periodic update checks. The first check is scheduled
|
| + // |kTimeoutOnce| seconds from now. Subsequent checks are scheduled
|
| + // at |kTimeoutPeriodic|-second intervals.
|
| + SchedulePeriodicUpdateCheck(kTimeoutOnce);
|
| +}
|
| +
|
| +void UpdateAttempter::SchedulePeriodicUpdateCheck(int seconds) {
|
| + seconds = utils::FuzzInt(seconds, kTimeoutFuzz);
|
| + g_timeout_add_seconds(seconds, CheckForUpdatePeriodically, this);
|
| + LOG(INFO) << "Next update check in " << seconds << " seconds.";
|
| +}
|
| +
|
| void UpdateAttempter::SetPriority(utils::ProcessPriority priority) {
|
| if (priority_ == priority) {
|
| return;
|
|
|