]> git.saurik.com Git - apt.git/commitdiff
do not redownload unchanged InRelease files
authorDavid Kalnischkies <kalnischkies@gmail.com>
Sat, 15 Jun 2013 21:47:07 +0000 (23:47 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Thu, 20 Jun 2013 08:53:58 +0000 (10:53 +0200)
Before we download the 'new' InRelease file the old file will be moved
out of the way with the name 'foobar_InRelease.reverify', so if no
partial file for the 'new' file exists take the modification time from
this reverify file, so that if we get an IMS hit for the InRelease file
we can move back the reverify file as new file rather than downloading
the 'new' file even though we already have it.

We do the same for Release files and this happened to work until the
reverify renaming was corrected for InRelease files.

apt-pkg/acquire-item.cc
debian/changelog

index 7b800e42fcc7f62c9ea7d6fd926c294b2ccfed76..c48443efffe139ed7159ef4d80b73a97f6d087fd 100644 (file)
@@ -1289,7 +1289,14 @@ void pkgAcqMetaIndex::RetrievalDone(string Message)                      /*{{{*/
       string FinalFile = _config->FindDir("Dir::State::lists");
       FinalFile += URItoFileName(RealURI);
       if (SigFile == DestFile)
+      {
         SigFile = FinalFile;
+        // constructor of pkgAcqMetaClearSig moved it out of the way,
+        // now move it back in on IMS hit for the 'old' file
+        string const OldClearSig = DestFile + ".reverify";
+        if (RealFileExists(OldClearSig) == true)
+           Rename(OldClearSig, FinalFile);
+      }
       DestFile = FinalFile;
    }
    Complete = true;
@@ -1595,7 +1602,11 @@ string pkgAcqMetaClearSig::Custom600Headers()
 
    struct stat Buf;
    if (stat(Final.c_str(),&Buf) != 0)
-      return "\nIndex-File: true\nFail-Ignore: true\n";
+   {
+      Final = DestFile + ".reverify";
+      if (stat(Final.c_str(),&Buf) != 0)
+        return "\nIndex-File: true\nFail-Ignore: true\n";
+   }
 
    return "\nIndex-File: true\nFail-Ignore: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
 }
index dfff872a72780ec3076be1134acfd4bc3fc6c408..91d4ae53607e7a4a58cc9fd78d483e967522690e 100644 (file)
@@ -19,6 +19,7 @@ apt (0.9.8.3) UNRELEASED; urgency=low
   * handle missing "Description" in apt-cache show (Closes: #712435)
   * try defaults if auto-detection failed in apt-cdrom (Closes: #712433)
   * support \n and \r\n line endings in ReadMessages
+  * do not redownload unchanged InRelease files
 
  -- David Kalnischkies <kalnischkies@gmail.com>  Sun, 09 Jun 2013 15:06:24 +0200