The unified diff between revisions [2227bef1..] and [b64977b0..] is displayed below. It can also be downloaded as a raw diff.
#
#
# patch "netsync.cc"
# from [2158f0f1f9e8f5e83aa4a5dfefa05d104bdb0a0e]
# to [9f4f8044de6b3c6d3f63265d5bbf23cc41a2a768]
#
============================================================
--- netsync.cc 2158f0f1f9e8f5e83aa4a5dfefa05d104bdb0a0e
+++ netsync.cc 9f4f8044de6b3c6d3f63265d5bbf23cc41a2a768
@@ -3796,7 +3796,10 @@ ancestry_fetcher::request_rev_file_delta
ancestry_fetcher::request_rev_file_deltas(file_id const & start)
{
stack< file_id > frontier;
+ set<file_id> done_files;
+
frontier.push(start);
+ done_files.insert(start);
while (!frontier.empty())
{
@@ -3825,7 +3828,11 @@ ancestry_fetcher::request_rev_file_delta
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_d
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 @@ ancestry_fetcher::request_rev_manifest_d
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);
+ }
}
}
}