AU: Don't request data ranges beyond the end of the payload.

This avoids 416 HTTP response error codes from the server. Note that even
without this change update would eventually succeed due to more than 10 resume
failures (so the safety net actually worked).

BUG=8017
TEST=unit tests; tested on device by first reproducing the issue by
interrupting an update during the finalizing step and then getting 416,
then verified the patch resumes the update. Also, verified updates
interrupted in the middle of the download resume correctly.

Change-Id: Iede50a8f8a9d6c000cfeb03308e9ea4f3db74e1b

Review URL: http://codereview.chromium.org/3962005
1 file changed
tree: 2f11dbf165eed391dfcd9cfffc249a594bf0ede4
  1. certs/
  2. .gitignore
  3. action.h
  4. action_mock.h
  5. action_pipe.h
  6. action_pipe_unittest.cc
  7. action_processor.cc
  8. action_processor.h
  9. action_processor_mock.h
  10. action_processor_unittest.cc
  11. action_unittest.cc
  12. buffered_file_writer.cc
  13. buffered_file_writer.h
  14. buffered_file_writer_unittest.cc
  15. bzip.cc
  16. bzip.h
  17. bzip_extent_writer.cc
  18. bzip_extent_writer.h
  19. bzip_extent_writer_unittest.cc
  20. cycle_breaker.cc
  21. cycle_breaker.h
  22. cycle_breaker_unittest.cc
  23. dbus_constants.h
  24. dbus_interface.h
  25. dbus_service.cc
  26. dbus_service.h
  27. decompressing_file_writer.cc
  28. decompressing_file_writer.h
  29. decompressing_file_writer_unittest.cc
  30. delta_diff_generator.cc
  31. delta_diff_generator.h
  32. delta_diff_generator_unittest.cc
  33. delta_performer.cc
  34. delta_performer.h
  35. delta_performer_unittest.cc
  36. download_action.cc
  37. download_action.h
  38. download_action_unittest.cc
  39. extent_mapper.cc
  40. extent_mapper.h
  41. extent_mapper_unittest.cc
  42. extent_ranges.cc
  43. extent_ranges.h
  44. extent_ranges_unittest.cc
  45. extent_writer.cc
  46. extent_writer.h
  47. extent_writer_unittest.cc
  48. file_writer.cc
  49. file_writer.h
  50. file_writer_mock.h
  51. file_writer_unittest.cc
  52. filesystem_copier_action.cc
  53. filesystem_copier_action.h
  54. filesystem_copier_action_unittest.cc
  55. filesystem_iterator.cc
  56. filesystem_iterator.h
  57. filesystem_iterator_unittest.cc
  58. flimflam_proxy.cc
  59. flimflam_proxy.h
  60. flimflam_proxy_unittest.cc
  61. gen_coverage_html.sh
  62. generate_delta_main.cc
  63. graph_types.h
  64. graph_utils.cc
  65. graph_utils.h
  66. graph_utils_unittest.cc
  67. gzip.cc
  68. gzip.h
  69. http_fetcher.h
  70. http_fetcher_unittest.cc
  71. inherit-review-settings-ok
  72. install_plan.h
  73. integration_unittest.cc
  74. libcurl_http_fetcher.cc
  75. libcurl_http_fetcher.h
  76. LICENSE
  77. local_coverage_rate.sh
  78. main.cc
  79. marshal.list
  80. mock_dbus_interface.h
  81. mock_file_writer.h
  82. mock_http_fetcher.cc
  83. mock_http_fetcher.h
  84. multi_http_fetcher.h
  85. omaha_hash_calculator.cc
  86. omaha_hash_calculator.h
  87. omaha_hash_calculator_unittest.cc
  88. omaha_request_action.cc
  89. omaha_request_action.h
  90. omaha_request_action_unittest.cc
  91. omaha_request_params.cc
  92. omaha_request_params.h
  93. omaha_request_params_unittest.cc
  94. omaha_response_handler_action.cc
  95. omaha_response_handler_action.h
  96. omaha_response_handler_action_unittest.cc
  97. org.chromium.UpdateEngine.service
  98. payload_signer.cc
  99. payload_signer.h
  100. payload_signer_unittest.cc
  101. postinstall_runner_action.cc
  102. postinstall_runner_action.h
  103. postinstall_runner_action_unittest.cc
  104. prefs.cc
  105. prefs.h
  106. prefs_interface.h
  107. prefs_mock.h
  108. prefs_unittest.cc
  109. SConstruct
  110. set_bootable_flag_action.cc
  111. set_bootable_flag_action.h
  112. set_bootable_flag_action_unittest.cc
  113. setup_dev_packages
  114. simple_key_value_store.cc
  115. simple_key_value_store.h
  116. simple_key_value_store_unittest.cc
  117. split_file_writer.cc
  118. split_file_writer.h
  119. split_file_writer_unittest.cc
  120. subprocess.cc
  121. subprocess.h
  122. subprocess_unittest.cc
  123. tarjan.cc
  124. tarjan.h
  125. tarjan_unittest.cc
  126. terminator.cc
  127. terminator.h
  128. test_http_server.cc
  129. test_http_server.py
  130. test_utils.cc
  131. test_utils.h
  132. testrunner.cc
  133. topological_sort.cc
  134. topological_sort.h
  135. topological_sort_unittest.cc
  136. unittest_key.pem
  137. update_attempter.cc
  138. update_attempter.h
  139. update_attempter_mock.h
  140. update_attempter_unittest.cc
  141. update_check_scheduler.cc
  142. update_check_scheduler.h
  143. update_check_scheduler_unittest.cc
  144. update_engine.xml
  145. update_engine_client.cc
  146. update_metadata.proto
  147. UpdateEngine.conf
  148. utils.cc
  149. utils.h
  150. utils_unittest.cc
  151. WATCHLISTS
  152. zip_unittest.cc