Item::Done(Message, Size, Hashes, Cnf);
+ // verify the index target
+ if(Target && Target->MetaKey != "" && MetaIndexParser && Hashes.size() > 0)
+ {
+ std::string IndexMetaKey = Target->MetaKey + ".diff/Index";
+ indexRecords::checkSum *Record = MetaIndexParser->Lookup(IndexMetaKey);
+ if(Record && Record->Hashes.usable() && Hashes != Record->Hashes)
+ {
+ RenameOnError(HashSumMismatch);
+ printHashSumComparision(RealURI, Record->Hashes, Hashes);
+ Failed(Message, Cnf);
+ return;
+ }
+
+ }
+
string FinalFile;
FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
Item::Done(Message, Size, Hashes, Cnf);
+ // FIXME: verify this download too before feeding it to rred
+
string FinalFile;
FinalFile = _config->FindDir("Dir::State::lists")+"partial/"+URItoFileName(RealURI);
Item::Done(Message,Size,Hashes,Cnf);
+ // FIXME: verify download before feeding it to rred
+
string const FinalFile = _config->FindDir("Dir::State::lists") + "partial/" + URItoFileName(RealURI);
if (State == StateFetchDiff)