]> git.saurik.com Git - apt.git/commitdiff
* apt-pkg/acquire-item.cc:
authorMichael Vogt <michael.vogt@ubuntu.com>
Tue, 17 Apr 2007 14:06:50 +0000 (16:06 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Tue, 17 Apr 2007 14:06:50 +0000 (16:06 +0200)
  - if decompression of a index fails, delete the index (LP#68202)
* [internal-ABI] apt-pkg/acquire.{cc,h}:
  - deal better with duplicated sources.list entries (avoid
    double queuing of  URLs) - this fixes hangs in bzip/gzip
    (LP#102511)

apt-pkg/acquire-item.cc
apt-pkg/acquire.cc
apt-pkg/acquire.h
configure.in
debian/changelog

index 3be7878bf58f307266ba116163d94de75d4bfc64..04f0bb943b6c108057a1cf1375340a8cd77ac0a7 100644 (file)
@@ -233,6 +233,7 @@ string pkgAcqIndex::Custom600Headers()
 
 void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
 {
+
    // no .bz2 found, retry with .gz
    if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") {
       Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz"; 
@@ -244,9 +245,15 @@ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
       Complete = false;
       Dequeue();
       return;
+   } 
+   
+   // on decompression failure, remove bad versions in partial/
+   if(Decompression && Erase) {
+      string s = _config->FindDir("Dir::State::lists") + "partial/";
+      s += URItoFileName(RealURI);
+      unlink(s.c_str());
    }
 
-   
    Item::Failed(Message,Cnf);
 }
 
index fff1b2b6ad379b28603de987933b4523dc5c3f36..e1dccf25ab1372b347b004f313403691c7dfbb8a 100644 (file)
@@ -193,9 +193,9 @@ void pkgAcquire::Enqueue(ItemDesc &Item)
    Item.Owner->Status = Item::StatIdle;
    
    // Queue it into the named queue
-   I->Enqueue(Item);
-   ToFetch++;
-         
+   if(I->Enqueue(Item)) 
+      ToFetch++;
+            
    // Some trace stuff
    if (Debug == true)
    {
@@ -549,11 +549,17 @@ pkgAcquire::Queue::~Queue()
 // Queue::Enqueue - Queue an item to the queue                         /*{{{*/
 // ---------------------------------------------------------------------
 /* */
-void pkgAcquire::Queue::Enqueue(ItemDesc &Item)
+bool pkgAcquire::Queue::Enqueue(ItemDesc &Item)
 {
    QItem **I = &Items;
-   for (; *I != 0; I = &(*I)->Next);
-   
+   // move to the end of the queue and check for duplicates here
+   for (; *I != 0; I = &(*I)->Next)
+      if (Item.URI == (*I)->URI) 
+      {
+        Item.Owner->Status = Item::StatDone;
+        return false;
+      }
+
    // Create a new item
    QItem *Itm = new QItem;
    *Itm = Item;
@@ -563,6 +569,7 @@ void pkgAcquire::Queue::Enqueue(ItemDesc &Item)
    Item.Owner->QueueCounter++;   
    if (Items->Next == 0)
       Cycle();
+   return true;
 }
                                                                        /*}}}*/
 // Queue::Dequeue - Remove an item from the queue                      /*{{{*/
index 27bb3d363a985b588c5d199d8c15371d919590eb..1d5daf12e5b56afc61051251eda3d0f4215b5a07 100644 (file)
@@ -173,7 +173,7 @@ class pkgAcquire::Queue
    public:
    
    // Put an item into this queue
-   void Enqueue(ItemDesc &Item);
+   bool Enqueue(ItemDesc &Item);
    bool Dequeue(Item *Owner);
 
    // Find a Queued item
index ca841df36770ef8d948430ca38689659664c04db..d9c68eb8f11a154807673be04828a1d18837dd2b 100644 (file)
@@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 
 dnl -- SET THIS TO THE RELEASE VERSION --
-AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4ubuntu10")
+AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4ubuntu11")
 PACKAGE="apt"
 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
 AC_SUBST(PACKAGE)
index a4fc708ac2d89298ebc5cb0b5b203e6ac4e86383..0701185b99381f532e5d30d45e280a60a83852e4 100644 (file)
@@ -1,10 +1,16 @@
-apt (0.6.46.4ubuntu11) feisty; urgency=low
+apt (0.6.46.4ubuntu11) UNRELEASED; urgency=low
 
   * po/gl.po:
     - fix error in translation that causes trouble to lsb_release 
       (LP#79165)
+  * apt-pkg/acquire-item.cc:
+    - if decompression of a index fails, delete the index (LP#68202)
+  * [internal-ABI] apt-pkg/acquire.{cc,h}:
+    - deal better with duplicated sources.list entries (avoid
+      double queuing of  URLs) - this fixes hangs in bzip/gzip
+      (LP#102511)
 
- --
+ -- Michael Vogt <michael.vogt@ubuntu.com>  Tue, 17 Apr 2007 15:53:37 +0200
 
 apt (0.6.46.4ubuntu10) feisty; urgency=low