Browse Source

enhance the Valid-Until code a bit by using the correct RFC1123StrToTime

method and allow for better translations of the error messages
debian/1.8.y
David Kalnischkies 12 years ago
parent
commit
0323317c08
  1. 16
      apt-pkg/acquire-item.cc
  2. 24
      apt-pkg/indexrecords.cc

16
apt-pkg/acquire-item.cc

@ -1178,13 +1178,15 @@ bool pkgAcqMetaIndex::VerifyVendor(string Message) /*{{{*/
Transformed = "";
}
if (_config->FindB("Acquire::Check-Valid-Until", true)) {
if (MetaIndexParser->GetValidUntil() > 0 &&
time(NULL) > MetaIndexParser->GetValidUntil()) {
return _error->Error(_("Release file expired, ignoring %s (valid until %s)"),
RealURI.c_str(),
TimeRFC1123(MetaIndexParser->GetValidUntil()).c_str());
}
if (_config->FindB("Acquire::Check-Valid-Until", true) == true &&
MetaIndexParser->GetValidUntil() > 0) {
time_t const invalid_since = time(NULL) - MetaIndexParser->GetValidUntil();
if (invalid_since > 0)
// TRANSLATOR: The first %s is the URL of the bad Release file, the second is
// the time since then the file is invalid - formated in the same way as in
// the download progress display (e.g. 7d 3h 42min 1s)
return _error->Error(_("Release file expired, ignoring %s (invalid since %s)"),
RealURI.c_str(), TimeToStr(invalid_since).c_str());
}
if (_config->FindB("Debug::pkgAcquire::Auth", false))

24
apt-pkg/indexrecords.cc

@ -91,30 +91,30 @@ bool indexRecords::Load(const string Filename) /*{{{*/
}
string Label = Section.FindS("Label");
string StrDate = Section.FindS("Date");
string StrDate = Section.FindS("Date");
string StrValidUntil = Section.FindS("Valid-Until");
// if we have a Valid-Until header, use it
if (!StrValidUntil.empty())
if (StrValidUntil.empty() == false)
{
// set ValidUntil based on the information in the Release file
if(!StrToTime(StrValidUntil, ValidUntil))
if(RFC1123StrToTime(StrValidUntil.c_str(), ValidUntil) == false)
{
ErrorText = _(("Invalid 'Valid-Until' entry in Release file " + Filename).c_str());
strprintf(ErrorText, _("Invalid 'Valid-Until' entry in Release file %s"), Filename.c_str());
return false;
}
} else {
// if we don't have a valid-until string, check if we have a default
if (!Label.empty())
int MaxAge = _config->FindI("APT::Acquire::Max-Default-Age", 0);
if (Label.empty() == true)
MaxAge = _config->FindI(string("APT::Acquire::Max-Default-Age::"+Label).c_str(), MaxAge);
if(MaxAge > 0 && RFC1123StrToTime(StrDate.c_str(), ValidUntil) == false)
{
int MaxAge = _config->FindI(string("apt::acquire::max-default-age::"+Label).c_str(),0);
if(MaxAge > 0 && !StrToTime(StrDate, ValidUntil))
{
ErrorText = _(("Invalid 'Date' entry in Release file " + Filename).c_str());
return false;
}
ValidUntil += 24*60*60*MaxAge;
strprintf(ErrorText, _("Invalid 'Date' entry in Release file %s"), Filename.c_str());
return false;
}
ValidUntil += 24*60*60*MaxAge;
}
return true;

Loading…
Cancel
Save