} else if (missing.count(e.soid)) {
// already missing (prior).
//assert(missing[e.soid].need == e.prior_version);
- rmissing.erase(missing[e.soid].need);
+ rmissing.erase(missing[e.soid].need.version);
missing[e.soid].need = e.version; // leave .have unchanged.
+ } else if (e.is_backlog()) {
+ missing[e.soid].need = e.version;
} else {
// not missing, we must have prior_version (if any)
missing[e.soid] = item(e.version, e.prior_version);
if (missing[e.soid].need >= e.version)
return; // already missing same or newer.
// missing older, revise need
- rmissing.erase(missing[e.soid].need);
+ rmissing.erase(missing[e.soid].need.version);
missing[e.soid].need = e.version;
+ } else if (e.is_backlog()) {
+ missing[e.soid].need = e.version;
} else
// not missing => have prior_version (if any)
missing[e.soid] = item(e.version, e.prior_version);