]> git.saurik.com Git - apt.git/commitdiff
merged from the debian-wheezy branch
authorMichael Vogt <michael.vogt@ubuntu.com>
Wed, 8 May 2013 15:48:31 +0000 (17:48 +0200)
committerMichael Vogt <michael.vogt@ubuntu.com>
Wed, 8 May 2013 15:48:31 +0000 (17:48 +0200)
apt-pkg/acquire-worker.cc
apt-pkg/algorithms.cc
debian/changelog
debian/control
methods/https.cc

index 9d90b08bce08df6b494472eb417fde71a449f101..44a84216ab2ade98467a0aee23254787fdc4fd86 100644 (file)
@@ -305,7 +305,15 @@ bool pkgAcquire::Worker::RunMessages()
            
            OwnerQ->ItemDone(Itm);
            unsigned long long const ServerSize = strtoull(LookupTag(Message,"Size","0").c_str(), NULL, 10);
-           if (TotalSize != 0 && ServerSize != TotalSize)
+            bool isHit = StringToBool(LookupTag(Message,"IMS-Hit"),false) ||
+                         StringToBool(LookupTag(Message,"Alt-IMS-Hit"),false);
+            // Using the https method the server might return 200, but the
+            // If-Modified-Since condition is not satsified, libcurl will
+            // discard the download. In this case, however, TotalSize will be
+            // set to the actual size of the file, while ServerSize will be set
+            // to 0. Therefore, if the item is marked as a hit and the
+            // downloaded size (ServerSize) is 0, we ignore TotalSize.
+           if (TotalSize != 0 && (!isHit || ServerSize != 0) && ServerSize != TotalSize)
               _error->Warning("Size of file %s is not what the server reported %s %llu",
                               Owner->DestFile.c_str(), LookupTag(Message,"Size","0").c_str(),TotalSize);
 
@@ -332,8 +340,7 @@ bool pkgAcquire::Worker::RunMessages()
            // Log that we are done
            if (Log != 0)
            {
-              if (StringToBool(LookupTag(Message,"IMS-Hit"),false) == true ||
-                  StringToBool(LookupTag(Message,"Alt-IMS-Hit"),false) == true)
+              if (isHit)
               {
                  /* Hide 'hits' for local only sources - we also manage to
                     hide gets */
index 7fcd9f0db48da4fac460d271659e3524910b11b6..6cde4d6cc1ddcc5a8ae0da730db74f270c513789 100644 (file)
@@ -648,7 +648,10 @@ void pkgProblemResolver::MakeScores()
              D->Type != pkgCache::Dep::Recommends))
            continue;    
         
-        Scores[I->ID] += abs(OldScores[D.ParentPkg()->ID]);
+        // Do not propagate negative scores otherwise
+        // an extra (-2) package might score better than an optional (-1)
+        if (OldScores[D.ParentPkg()->ID] > 0)
+            Scores[I->ID] += OldScores[D.ParentPkg()->ID];
       }      
    }
 
index 7944d76ef16c2c312c293323a6ef9f088d132eb0..182596b62b531e40df0d4257ec687bf5d96927a6 100644 (file)
@@ -1,5 +1,15 @@
-apt (0.9.7.9~exp3) experimental; urgency=low
+apt (0.9.8) UNRELEASED; urgency=low
 
+  [ Ludovico Cavedon ]
+  * properly handle if-modfied-since with libcurl/https 
+    (closes: #705648)
+  
+  [ Andreas Beckman ]
+  * apt-pkg/algorithms.cc:
+    - Do not propagate negative scores from rdepends. Propagating the absolute
+      value of a negative score may boost obsolete packages and keep them
+      installed instead of installing their successors.  (Closes: #699759)
+  
   [ Michael Vogt ]
   * apt-pkg/sourcelist.cc:
     - fix segfault when a hostname contains a [, thanks to 
@@ -39,8 +49,8 @@ apt (0.9.7.9~exp3) experimental; urgency=low
   
   [ Manpages translations ]
   * French translation completed (Christian Perrier)
-  
- -- Michael Vogt <mvo@debian.org>  Mon, 08 Apr 2013 17:09:00 +0200
+
+ -- Michael Vogt <mvo@debian.org>  Mon, 08 Apr 2013 08:43:21 +0200
 
 apt (0.9.7.9~exp2) experimental; urgency=low
 
index 49647340a6346e063a8820aab05b054fd56cf56f..6507f6d6d45310be4d2334cf4f8b7f04cfe43ad8 100644 (file)
@@ -7,7 +7,7 @@ Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>,
  Julian Andres Klode <jak@debian.org>
 Standards-Version: 3.9.3
 Build-Depends: dpkg-dev (>= 1.15.8), debhelper (>= 8.1.3~), libdb-dev,
- gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.0),
+ gettext (>= 0.12), libcurl4-gnutls-dev (>= 7.19.4~),
  zlib1g-dev, libbz2-dev, xsltproc, docbook-xsl, docbook-xml,
  po4a (>= 0.34-2), autotools-dev, autoconf, automake
 Build-Depends-Indep: doxygen, debiandoc-sgml
index 11d4ba8aa785377d0d4bcf4afc334c9aa9520fc2..b44642ab25bde2fede0e02f0a896bbf672726b46 100644 (file)
@@ -285,6 +285,11 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
    long curl_servdate;
    curl_easy_getinfo(curl, CURLINFO_FILETIME, &curl_servdate);
 
+   // If the server returns 200 OK but the If-Modified-Since condition is not
+   // met, CURLINFO_CONDITION_UNMET will be set to 1
+   long curl_condition_unmet = 0;
+   curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &curl_condition_unmet);
+
    File->Close();
 
    // cleanup
@@ -312,7 +317,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm)
       Res.Filename = File->Name();
       Res.LastModified = Buf.st_mtime;
       Res.IMSHit = false;
-      if (curl_responsecode == 304)
+      if (curl_responsecode == 304 || curl_condition_unmet)
       {
         unlink(File->Name().c_str());
         Res.IMSHit = true;