# # patch "netsync.cc" # from [2158f0f1f9e8f5e83aa4a5dfefa05d104bdb0a0e] # to [9f4f8044de6b3c6d3f63265d5bbf23cc41a2a768] # ======================================================================== --- netsync.cc 2158f0f1f9e8f5e83aa4a5dfefa05d104bdb0a0e +++ netsync.cc 9f4f8044de6b3c6d3f63265d5bbf23cc41a2a768 @@ -3796,7 +3796,10 @@ ancestry_fetcher::request_rev_file_deltas(file_id const & start) { stack< file_id > frontier; + set done_files; + frontier.push(start); + done_files.insert(start); while (!frontier.empty()) { @@ -3825,7 +3828,11 @@ L(F("already have file %s, not requesting rev delta") % parent); } - frontier.push(parent); + if (done_files.find(parent) == done_files.end()) + { + frontier.push(parent); + done_files.insert(parent); + } } } } @@ -3870,7 +3877,10 @@ ancestry_fetcher::request_rev_manifest_deltas(manifest_id const & start) { stack< manifest_id > frontier; + set< manifest_id > done_manifests; + frontier.push(start); + done_manifests.insert(start); while (!frontier.empty()) { @@ -3899,7 +3909,11 @@ L(F("already have manifest %s, not requesting rev delta") % parent); } - frontier.push(parent); + if (done_manifests.find(parent) == done_manifests.end()) + { + frontier.push(parent); + done_manifests.insert(parent); + } } } }