summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/acquire-item.cc10
-rw-r--r--methods/connect.cc1
-rw-r--r--methods/http.cc3
-rw-r--r--methods/mirror.cc12
-rw-r--r--po/apt-all.pot34
5 files changed, 31 insertions, 29 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 0d3d6a083..08a029ff4 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -82,8 +82,7 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
}
// report mirror failure back to LP if we actually use a mirror
- if(!UsedMirror.empty())
- ReportMirrorFailure(ErrorText);
+ ReportMirrorFailure(ErrorText);
}
/*}}}*/
// Acquire::Item::Start - Item has begun to download /*{{{*/
@@ -138,10 +137,13 @@ void pkgAcquire::Item::Rename(string From,string To)
void pkgAcquire::Item::ReportMirrorFailure(string FailCode)
{
- // report that Queue->Uri failed
+ // we only act if a mirror was used at all
+ if(UsedMirror.empty())
+ return;
#if 0
std::cerr << "\nReportMirrorFailure: "
<< UsedMirror
+ << " Uri: " << DescURI()
<< " FailCode: "
<< FailCode << std::endl;
#endif
@@ -278,6 +280,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string MD5,
Status = StatAuthError;
ErrorText = _("MD5Sum mismatch");
Rename(DestFile,DestFile + ".FAILED");
+ ReportMirrorFailure("HashChecksumFailure");
return;
}
// Done, move it into position
@@ -765,6 +768,7 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
}
// gpgv method failed
+ ReportMirrorFailure("GPGFailure");
_error->Warning("GPG error: %s: %s",
Desc.Description.c_str(),
LookupTag(Message,"Message").c_str());
diff --git a/methods/connect.cc b/methods/connect.cc
index 4e227c3fd..145001fb3 100644
--- a/methods/connect.cc
+++ b/methods/connect.cc
@@ -163,6 +163,7 @@ bool Connect(string Host,int Port,const char *Service,int DefPort,int &Fd,
DefPort = 0;
continue;
}
+ Owner->SetFailReason("ResolveFailure");
return _error->Error(_("Could not resolve '%s'"),Host.c_str());
}
diff --git a/methods/http.cc b/methods/http.cc
index deaa8d0c8..01ad14655 100644
--- a/methods/http.cc
+++ b/methods/http.cc
@@ -914,6 +914,9 @@ int HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv)
failure */
if (Srv->Result < 200 || Srv->Result >= 300)
{
+ char err[255];
+ snprintf(err,sizeof(err)-1,"HttpError%i",Srv->Result);
+ SetFailReason(err);
_error->Error("%u %s",Srv->Result,Srv->Code);
if (Srv->HaveContent == true)
return 4;
diff --git a/methods/mirror.cc b/methods/mirror.cc
index 8ccfb8559..b64879bec 100644
--- a/methods/mirror.cc
+++ b/methods/mirror.cc
@@ -31,20 +31,14 @@ using namespace std;
/*}}}*/
/* Done:
- * - works with http only
+ * - works with http (only!)
* - always picks the first mirror from the list
* - call out to problem reporting script
* - supports "deb mirror://host/path/to/mirror-list/// dist component"
+ * - use pkgAcqMethod::FailReason() to have a string representation
+ * of the failure that is also send to LP
*
* TODO:
- * what about gpgv failures? this should call-out to the problem reporting
- script, but we need to know what mirror was used -> just run pkgAcquire::Item::ReportMirrorFailure()
- * better standard format for errors to send back
- * - implement failure reporting at the pkgAcquire::Item::Failed() level
- but then we need to send back what uri exactly was failing
- [mvo: the problem with this approach is ::Failed() is not really
- called for all failures :/ e.g. md5sum mismatch in a archive
- is not]
* - deal with runing as non-root because we can't write to the lists
dir then -> use the cached mirror file
* - better method to download than having a pkgAcquire interface here
diff --git a/po/apt-all.pot b/po/apt-all.pot
index 39759f265..f24f19ba7 100644
--- a/po/apt-all.pot
+++ b/po/apt-all.pot
@@ -1330,7 +1330,7 @@ msgstr ""
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 methods/mirror.cc:96
+#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38 methods/mirror.cc:98
#, c-format
msgid "Unable to read %s"
msgstr ""
@@ -1621,7 +1621,7 @@ msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:864 methods/http.cc:957 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:960 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
@@ -1685,22 +1685,22 @@ msgstr ""
msgid "Connecting to %s"
msgstr ""
-#: methods/connect.cc:166
+#: methods/connect.cc:167
#, c-format
msgid "Could not resolve '%s'"
msgstr ""
-#: methods/connect.cc:172
+#: methods/connect.cc:173
#, c-format
msgid "Temporary failure resolving '%s'"
msgstr ""
-#: methods/connect.cc:175
+#: methods/connect.cc:176
#, c-format
msgid "Something wicked happened resolving '%s:%s' (%i)"
msgstr ""
-#: methods/connect.cc:222
+#: methods/connect.cc:223
#, c-format
msgid "Unable to connect to %s %s:"
msgstr ""
@@ -1813,15 +1813,15 @@ msgstr ""
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:1106
+#: methods/http.cc:1109
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1123
+#: methods/http.cc:1126
msgid "Connection failed"
msgstr ""
-#: methods/http.cc:1214
+#: methods/http.cc:1217
msgid "Internal error"
msgstr ""
@@ -1956,7 +1956,7 @@ msgid "Unable to stat the mount point %s"
msgstr ""
#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
-#: methods/mirror.cc:102
+#: methods/mirror.cc:104
#, c-format
msgid "Unable to change to %s"
msgstr ""
@@ -2357,40 +2357,40 @@ msgstr ""
msgid "IO Error saving source cache"
msgstr ""
-#: apt-pkg/acquire-item.cc:131
+#: apt-pkg/acquire-item.cc:130
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:279 apt-pkg/acquire-item.cc:988
+#: apt-pkg/acquire-item.cc:281 apt-pkg/acquire-item.cc:992
msgid "MD5Sum mismatch"
msgstr ""
-#: apt-pkg/acquire-item.cc:683
+#: apt-pkg/acquire-item.cc:686
msgid "There is no public key available for the following key IDs:\n"
msgstr ""
-#: apt-pkg/acquire-item.cc:796
+#: apt-pkg/acquire-item.cc:800
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"to manually fix this package. (due to missing arch)"
msgstr ""
-#: apt-pkg/acquire-item.cc:855
+#: apt-pkg/acquire-item.cc:859
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"manually fix this package."
msgstr ""
-#: apt-pkg/acquire-item.cc:891
+#: apt-pkg/acquire-item.cc:895
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
-#: apt-pkg/acquire-item.cc:978
+#: apt-pkg/acquire-item.cc:982
msgid "Size mismatch"
msgstr ""