summaryrefslogtreecommitdiff
path: root/src/RequestGroupMan.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-25 21:42:54 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-02-25 21:42:54 +0900
commita49397ed19f4dff0bddba555ddd715e3766c488b (patch)
treeaecfef8a76fc442548f0067eaa588ba6f070b9a3 /src/RequestGroupMan.cc
parent2aeb7137d0b8d6d07c9250ec2dc9fbbbef26a599 (diff)
Fix infinite loop when size of downloadResults_ exceeds maxDownloadResult_
Diffstat (limited to 'src/RequestGroupMan.cc')
-rw-r--r--src/RequestGroupMan.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc
index e5cdc095..d232c5e0 100644
--- a/src/RequestGroupMan.cc
+++ b/src/RequestGroupMan.cc
@@ -883,11 +883,14 @@ void RequestGroupMan::addDownloadResult(const SharedHandle<DownloadResult>& dr)
assert(rv);
while(downloadResults_.size() > maxDownloadResult_){
DownloadResultList::SeqType::iterator i = downloadResults_.begin();
+ // Save last encountered error code so that we can report it
+ // later.
const SharedHandle<DownloadResult>& dr = (*i).second;
if(dr->belongsTo == 0 && dr->result != error_code::FINISHED) {
removedLastErrorResult_ = dr->result;
++removedErrorResult_;
}
+ downloadResults_.pop_front();
}
}