Fix resuming canceled updates.

Resuming an interrupted update was broken in several ways. First,
DeltaPerformer::CanResumeUpdate was checking for the number of
resume-failures to be more than the limit, not less. Then, the
resume logic didn't work for payload v2 when there was a
metadata signature included in the payload. Finally, resuming an
update after reading the payload signature (in payload v2) was not
updating the checkpoint, but storing the signature causing it to
attempt to parse it again and fail.

Bug: 27047026
Bug: chromium:590410
TEST=Manual procedure:
1. Start an update: update_engine_client --update ...
2. Cancel the update: update_engine_client --cancel
3. Re-start the same update: update_engine_client --update ...
-> The update should resume from the previous point.

Change-Id: I60134de155aa073a7ba91174cceea7297e5f8d17
7 files changed
tree: 75d8563ae6fadb8085fa5a2ba9713afba19855ec
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. include/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_manager/
  12. update_payload_key/
  13. weaved/
  14. .gitignore
  15. Android.mk
  16. binder_service_android.cc
  17. binder_service_android.h
  18. binder_service_brillo.cc
  19. binder_service_brillo.h
  20. boot_control_android.cc
  21. boot_control_android.h
  22. boot_control_chromeos.cc
  23. boot_control_chromeos.h
  24. boot_control_chromeos_unittest.cc
  25. chrome_browser_proxy_resolver.cc
  26. chrome_browser_proxy_resolver.h
  27. chrome_browser_proxy_resolver_unittest.cc
  28. common_service.cc
  29. common_service.h
  30. common_service_unittest.cc
  31. connection_manager.cc
  32. connection_manager.h
  33. connection_manager_interface.h
  34. connection_manager_unittest.cc
  35. daemon.cc
  36. daemon.h
  37. daemon_state_android.cc
  38. daemon_state_android.h
  39. daemon_state_interface.h
  40. dbus_service.cc
  41. dbus_service.h
  42. dbus_test_utils.h
  43. fake_file_writer.h
  44. fake_p2p_manager.h
  45. fake_p2p_manager_configuration.h
  46. fake_shill_proxy.cc
  47. fake_shill_proxy.h
  48. fake_system_state.cc
  49. fake_system_state.h
  50. generate_pc_file.sh
  51. hardware_android.cc
  52. hardware_android.h
  53. hardware_chromeos.cc
  54. hardware_chromeos.h
  55. image_properties.h
  56. image_properties_android.cc
  57. image_properties_chromeos.cc
  58. libcros_proxy.cc
  59. libcros_proxy.h
  60. libupdate_engine-client-test.pc.in
  61. libupdate_engine-client.pc.in
  62. local_coverage_rate
  63. main.cc
  64. metrics.cc
  65. metrics.h
  66. metrics_utils.cc
  67. metrics_utils.h
  68. metrics_utils_unittest.cc
  69. mock_action.h
  70. mock_action_processor.h
  71. mock_connection_manager.h
  72. mock_file_writer.h
  73. mock_omaha_request_params.h
  74. mock_p2p_manager.h
  75. mock_payload_state.h
  76. mock_update_attempter.h
  77. MODULE_LICENSE_APACHE2
  78. NOTICE
  79. omaha_request_action.cc
  80. omaha_request_action.h
  81. omaha_request_action_unittest.cc
  82. omaha_request_params.cc
  83. omaha_request_params.h
  84. omaha_request_params_unittest.cc
  85. omaha_response.h
  86. omaha_response_handler_action.cc
  87. omaha_response_handler_action.h
  88. omaha_response_handler_action_unittest.cc
  89. OWNERS
  90. p2p_manager.cc
  91. p2p_manager.h
  92. p2p_manager_unittest.cc
  93. parcelable_update_engine_status.cc
  94. parcelable_update_engine_status.h
  95. payload_state.cc
  96. payload_state.h
  97. payload_state_interface.h
  98. payload_state_unittest.cc
  99. PRESUBMIT.cfg
  100. proxy_resolver.cc
  101. proxy_resolver.h
  102. real_system_state.cc
  103. real_system_state.h
  104. run_unittests
  105. sample_omaha_v3_response.xml
  106. service_delegate_android_interface.h
  107. service_observer_interface.h
  108. shill_proxy.cc
  109. shill_proxy.h
  110. shill_proxy_interface.h
  111. system_state.h
  112. tar_bunzip2.gypi
  113. test_http_server.cc
  114. testrunner.cc
  115. unittest_key.pem
  116. unittest_key2.pem
  117. update_attempter.cc
  118. update_attempter.h
  119. update_attempter_android.cc
  120. update_attempter_android.h
  121. update_attempter_unittest.cc
  122. update_engine-client.gyp
  123. update_engine.conf
  124. update_engine.gyp
  125. update_engine.rc
  126. update_engine_client.cc
  127. update_engine_client_android.cc
  128. update_metadata.proto
  129. update_status_utils.cc
  130. update_status_utils.h
  131. UpdateEngine.conf
  132. WATCHLISTS
  133. weave_service.cc
  134. weave_service.h
  135. weave_service_factory.cc
  136. weave_service_factory.h
  137. weave_service_interface.h