summaryrefslogtreecommitdiff
path: root/src/DefaultPeerStorage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-15 11:42:46 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-06-15 11:42:46 +0000
commit98dc02192d4b10eb6057a7d6a724b2e05a5767ef (patch)
tree00997a53ab6a4b20e8cddc842e151d32c778c271 /src/DefaultPeerStorage.cc
parent3dfbec0f9ff13c660252d20dce17c88041280019 (diff)
2010-06-15 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed assertion error if updateTransferStatFor is called with peer X before calculateStat() after peer X is added. * src/DefaultPeerStorage.cc
Diffstat (limited to 'src/DefaultPeerStorage.cc')
-rw-r--r--src/DefaultPeerStorage.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/DefaultPeerStorage.cc b/src/DefaultPeerStorage.cc
index 6dc59770..680afb6b 100644
--- a/src/DefaultPeerStorage.cc
+++ b/src/DefaultPeerStorage.cc
@@ -249,7 +249,9 @@ void DefaultPeerStorage::updateTransferStatFor(const SharedHandle<Peer>& peer)
}
std::map<std::string, TransferStat>::iterator itr =
_peerTransferStatMap.find(peer->getID());
- assert(itr != _peerTransferStatMap.end());
+ if(itr == _peerTransferStatMap.end()) {
+ return;
+ }
_cachedTransferStat -= (*itr).second;
TransferStat s = calculateStatFor(peer);
_cachedTransferStat += s;
@@ -259,7 +261,13 @@ void DefaultPeerStorage::updateTransferStatFor(const SharedHandle<Peer>& peer)
TransferStat DefaultPeerStorage::getTransferStatFor
(const SharedHandle<Peer>& peer)
{
- return _peerTransferStatMap[peer->getID()];
+ std::map<std::string, TransferStat>::const_iterator itr =
+ _peerTransferStatMap.find(peer->getID());
+ if(itr == _peerTransferStatMap.end()) {
+ return TransferStat();
+ } else {
+ return (*itr).second;
+ }
}
void DefaultPeerStorage::deleteUnusedPeer(size_t delSize) {