summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-01-10 16:53:41 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2006-01-10 16:53:41 +0000
commit0e1821f3d826829fb3393c516ea3920eeccf46aa (patch)
treec17f03c767bab909f10b31f629db622d3a8ec257 /apt-pkg
parentfdd15654d89c08ef056905529df4992db1ab67f4 (diff)
parentc5691ddf15797bead5d77021ee0524635798bebb (diff)
* merged with apt--mvo
Patches applied: * bubulle@debian.org--2005/apt--main--0--patch-134 Updated Basque translation * bubulle@debian.org--2005/apt--main--0--patch-135 Completed Basque translation * bubulle@debian.org--2005/apt--main--0--patch-136 French manpage of sources.list updated * bubulle@debian.org--2005/apt--main--0--patch-137 Disable Hebrew translation on trnaslator's request * bubulle@debian.org--2005/apt--main--0--patch-138 Swedish translation update * bubulle@debian.org--2005/apt--main--0--patch-139 Tagalog translation update * bubulle@debian.org--2005/apt--main--0--patch-140 Fix a translation glitch in German * bubulle@debian.org--2005/apt--main--0--patch-141 Revert the German fix * bubulle@debian.org--2005/apt--main--0--patch-142 Updated Vietnamese translation * bubulle@debian.org--2005/apt--main--0--patch-143 Really add the Vietnamese translation * bubulle@debian.org--2005/apt--main--0--patch-144 Greek translation update * bubulle@debian.org--2005/apt--main--0--patch-145 Simplified Chinese completed * bubulle@debian.org--2005/apt--main--0--patch-146 Czech translation update * bubulle@debian.org--2005/apt--main--0--patch-147 British translation of apt * bubulle@debian.org--2005/apt--main--0--patch-148 Italian translation update * bubulle@debian.org--2005/apt--main--0--patch-149 Merge with Michael archive (Debian version) * bubulle@debian.org--2005/apt--main--0--patch-150 Fix typo in apt-get.cc and update PO files * bubulle@debian.org--2005/apt--main--0--patch-151 Update French translation (and document the update-po I ran previously) * bubulle@debian.org--2005/apt--main--0--patch-152 Updated Slovak translation * bubulle@debian.org--2005/apt--main--0--patch-153 Close the right bug for Slovak translation * bubulle@debian.org--2005/apt--main--0--patch-154 French manpages translation update * bubulle@debian.org--2005/apt--main--0--patch-155 Swedish translation update * bubulle@debian.org--2005/apt--main--0--patch-156 Better makefile for more up-to-date PO and POT * bubulle@debian.org--2005/apt--main--0--patch-157 Run make uupdate-po * bubulle@debian.org--2005/apt--main--0--patch-158 Fix spaces errors in some translations * bubulle@debian.org--2005/apt--main--0--patch-159 Patch to allow "make apt-all.pot" work in the baz archive * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-109 * add " " in update-po * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-110 * make apt-get source smarter about not downloading the same sources twice * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-111 * merged with bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-112 * 2006 ftp-archive signing key added * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-113 * be more clever about I-M-S hits for the Release file and gpg-failures with it, requeue it without i-m-s then * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-114 * merged with mvo * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-115 * string fix * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-116 * changelog updates * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-117 * merged with bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-118 * merged from bubulle * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-119 * fix http data corruption (#280844) * mvo@debian.org--2005/apt--debian-experimental--0--patch-12 * added http data corruption fix patch (#280844) * mvo@debian.org--2005/apt--debian-sid--0--base-0 tag of michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-71 * mvo@debian.org--2005/apt--debian-sid--0--patch-1 * merged with apt--mvo--0 * mvo@debian.org--2005/apt--debian-sid--0--patch-2 * merged with apt--mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-3 * updated apt-all.pot * mvo@debian.org--2005/apt--debian-sid--0--patch-4 * merged with apt--mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-5 * merge with apt--mvo--0 * mvo@debian.org--2005/apt--debian-sid--0--patch-6 * merge with apt--mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-7 * applied patch from Petr Vandrovec to fix http download corruption * mvo@debian.org--2005/apt--debian-sid--0--patch-8 * merged with apt--mvo, regenerated the po files * mvo@debian.org--2005/apt--debian-sid--0--patch-9 * merged with apt--mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-10 * merged with apt--mvo and corrected conflicts in po/ * mvo@debian.org--2005/apt--debian-sid--0--patch-11 * changelog updates * mvo@debian.org--2005/apt--debian-sid--0--patch-12 * apt--mvo merged * mvo@debian.org--2005/apt--debian-sid--0--patch-13 * merged with mvo * mvo@debian.org--2005/apt--debian-sid--0--patch-14 * merged with apt--mvo--0 * mvo@debian.org--2005/apt--debian-sid--0--patch-15 * support multiple signatures * mvo@debian.org--2005/apt--debian-sid--0--patch-16 * merged with main * philippe.batailler@free.fr--2005/apt--main--0--patch-4 Update of sources.list * philippe.batailler@free.fr--2005/apt--main--0--patch-6 Change apt.ent.fr * philippe.batailler@free.fr--2005/apt--main--0--patch-7 Update manpages
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/acquire-item.cc51
-rw-r--r--apt-pkg/acquire-item.h4
2 files changed, 48 insertions, 7 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 88c25de43..86f61dd00 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -430,7 +430,7 @@ pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner,
const vector<struct IndexTarget*>* IndexTargets,
indexRecords* MetaIndexParser) :
Item(Owner), RealURI(URI), SigFile(SigFile), AuthPass(false),
- MetaIndexParser(MetaIndexParser), IndexTargets(IndexTargets)
+ MetaIndexParser(MetaIndexParser), IndexTargets(IndexTargets), IMSHit(false)
{
DestFile = _config->FindDir("Dir::State::lists") + "partial/";
DestFile += URItoFileName(URI);
@@ -523,6 +523,9 @@ void pkgAcqMetaIndex::RetrievalDone(string Message)
return;
}
+ // see if the download was a IMSHit
+ IMSHit = StringToBool(LookupTag(Message,"IMS-Hit"),false);
+
Complete = true;
string FinalFile = _config->FindDir("Dir::State::lists");
@@ -551,7 +554,7 @@ void pkgAcqMetaIndex::AuthDone(string Message)
return;
}
- if (!VerifyVendor())
+ if (!VerifyVendor(Message))
{
return;
}
@@ -609,7 +612,7 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify)
}
}
-bool pkgAcqMetaIndex::VerifyVendor()
+bool pkgAcqMetaIndex::VerifyVendor(string Message)
{
// // Maybe this should be made available from above so we don't have
// // to read and parse it every time?
@@ -634,6 +637,22 @@ bool pkgAcqMetaIndex::VerifyVendor()
// break;
// }
// }
+ string::size_type pos;
+
+ // check for missing sigs (that where not fatal because otherwise we had
+ // bombed earlier)
+ string missingkeys;
+ string msg = _("There are no public key available for the "
+ "following key IDs:\n");
+ pos = Message.find("NO_PUBKEY ");
+ if (pos != std::string::npos)
+ {
+ string::size_type start = pos+strlen("NO_PUBKEY ");
+ string Fingerprint = Message.substr(start, Message.find("\n")-start);
+ missingkeys += (Fingerprint);
+ }
+ if(!missingkeys.empty())
+ _error->Warning("%s", string(msg+missingkeys).c_str());
string Transformed = MetaIndexParser->GetExpectedDist();
@@ -642,7 +661,7 @@ bool pkgAcqMetaIndex::VerifyVendor()
Transformed = "experimental";
}
- string::size_type pos = Transformed.rfind('/');
+ pos = Transformed.rfind('/');
if (pos != string::npos)
{
Transformed = Transformed.substr(0, pos);
@@ -688,10 +707,30 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
{
if (AuthPass == true)
{
- // gpgv method failed
+ // if we fail the authentication but got the file via a IMS-Hit
+ // this means that the file wasn't downloaded and that it might be
+ // just stale (server problem, proxy etc). we delete what we have
+ // queue it again without i-m-s
+ // alternatively we could just unlink the file and let the user try again
+ if (IMSHit)
+ {
+ Complete = false;
+ Local = false;
+ AuthPass = false;
+ unlink(DestFile.c_str());
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(RealURI);
+ Desc.URI = RealURI;
+ QueueURI(Desc);
+ return;
+ }
+
+ // gpgv method failed
_error->Warning("GPG error: %s: %s",
Desc.Description.c_str(),
LookupTag(Message,"Message").c_str());
+
}
// No Release file was present, or verification failed, so fall
@@ -1037,7 +1076,7 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string MD5,
else
PartialSize = Buf.st_size;
}
-
+
QueueURI(Desc);
}
/*}}}*/
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
index c34b5ef69..da1bea801 100644
--- a/apt-pkg/acquire-item.h
+++ b/apt-pkg/acquire-item.h
@@ -151,8 +151,10 @@ class pkgAcqMetaIndex : public pkgAcquire::Item
const vector<struct IndexTarget*>* IndexTargets;
indexRecords* MetaIndexParser;
bool AuthPass;
+ // required to deal gracefully with problems caused by incorrect ims hits
+ bool IMSHit;
- bool VerifyVendor();
+ bool VerifyVendor(string Message);
void RetrievalDone(string Message);
void AuthDone(string Message);
void QueueIndexes(bool verify);