diff options
author | David Kalnischkies <david@kalnischkies.de> | 2016-07-06 15:10:52 +0200 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2016-07-06 15:53:59 +0200 |
commit | b50dfa6b2dd2d459e0c2746ac9367982b96ffac0 (patch) | |
tree | 25d701de638b3f5adc9ec072d11d6724057a5317 /apt-pkg/acquire-method.cc | |
parent | 3465138575e1fd0d5892d9b6be1ae232eb873460 (diff) |
report all instead of first error up the acquire chain
If we don't give a specific error to report up it is likely that all
error currently in the error stack are equally important, so reporting
just one could turn out to be confusing e.g. if name resolution failed
in a SRV record list.
Diffstat (limited to 'apt-pkg/acquire-method.cc')
-rw-r--r-- | apt-pkg/acquire-method.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc index a9fff661b..39d5e61f2 100644 --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@ -80,9 +80,20 @@ void pkgAcqMethod::Fail(bool Transient) { string Err = "Undetermined Error"; if (_error->empty() == false) - _error->PopMessage(Err); - _error->Discard(); - Fail(Err,Transient); + { + Err.clear(); + while (_error->empty() == false) + { + std::string msg; + if (_error->PopMessage(msg)) + { + if (Err.empty() == false) + Err.append("\n"); + Err.append(msg); + } + } + } + Fail(Err, Transient); } /*}}}*/ // AcqMethod::Fail - A fetch has failed /*{{{*/ |