diff --git a/otafault/config.cpp b/otafault/config.cpp index ee4ef891..8590833e 100644 --- a/otafault/config.cpp +++ b/otafault/config.cpp @@ -29,21 +29,23 @@ #define OTAIO_MAX_FNAME_SIZE 128 static ZipArchiveHandle archive; +static bool is_retry = false; static std::map should_inject_cache; static std::string get_type_path(const char* io_type) { return android::base::StringPrintf("%s/%s", OTAIO_BASE_DIR, io_type); } -void ota_io_init(ZipArchiveHandle za) { +void ota_io_init(ZipArchiveHandle za, bool retry) { archive = za; + is_retry = retry; ota_set_fault_files(); } bool should_fault_inject(const char* io_type) { // archive will be NULL if we used an entry point other // than updater/updater.cpp:main - if (archive == NULL) { + if (archive == nullptr || is_retry) { return false; } const std::string type_path = get_type_path(io_type); diff --git a/otafault/config.h b/otafault/config.h index c048617c..4adbdd12 100644 --- a/otafault/config.h +++ b/otafault/config.h @@ -52,7 +52,7 @@ /* * Initialize libotafault by providing a reference to the OTA package. */ -void ota_io_init(ZipArchiveHandle zip); +void ota_io_init(ZipArchiveHandle zip, bool retry); /* * Return true if a config file is present for the given IO type. diff --git a/updater/updater.cpp b/updater/updater.cpp index 3e624dae..47306626 100644 --- a/updater/updater.cpp +++ b/updater/updater.cpp @@ -100,7 +100,6 @@ int main(int argc, char** argv) { CloseArchive(za); return 3; } - ota_io_init(za); ZipString script_name(SCRIPT_NAME); ZipEntry script_entry; @@ -166,6 +165,7 @@ int main(int argc, char** argv) { printf("unexpected argument: %s", argv[4]); } } + ota_io_init(za, state.is_retry); std::string result; bool status = Evaluate(&state, root, &result);