79 std::vector<CBlockHeader> all_headers;
80 std::vector<CBlockHeader>::const_iterator redownloaded_it;
82 bool requested_more{
true};
84 while (requested_more) {
85 std::vector<CBlockHeader> headers;
89 if (presync || fuzzed_data_provider.
ConsumeBool()) {
91 if (!deser_headers || deser_headers->empty())
return;
97 headers.swap(*deser_headers);
98 }
else if (
auto num_headers_left{std::distance(redownloaded_it, all_headers.cend())}; num_headers_left > 0) {
101 auto begin_it{redownloaded_it};
103 headers.insert(headers.cend(), begin_it, redownloaded_it);
106 if (headers.empty())
return;
110 if (result.request_more) {
112 all_headers.insert(all_headers.cend(), headers.cbegin(), headers.cend());
114 if (headers_sync.
GetState() == HeadersSyncState::State::REDOWNLOAD) {
116 redownloaded_it = all_headers.cbegin();