diff --git a/disk/extextractordiskreaddriver.cpp b/disk/extextractordiskreaddriver.cpp index 3d7f5fd..c1b8846 100644 --- a/disk/extextractordiskreaddriver.cpp +++ b/disk/extextractordiskreaddriver.cpp @@ -25,12 +25,12 @@ optional ExtExtractorDiskReadDriver::readLogicalDiskAligned(Communicat return nullopt; optional ret; - // timeout loop assuming - const auto perAttemptTimeout = std::chrono::milliseconds(500); - while(timeout > std::chrono::milliseconds(0) && !ret.has_value()) { - auto start = std::chrono::steady_clock::now(); - ret = attemptReadLogicalDiskAligned(com, report, pos, into, amount, perAttemptTimeout); - timeout -= std::chrono::duration_cast(std::chrono::steady_clock::now() - start); + unsigned int attempts = 4; + while (attempts-- > 0) + { + ret = attemptReadLogicalDiskAligned(com, report, pos, into, amount, timeout); + if (ret.has_value()) + break; } return ret; }