diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-15 11:42:46 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-06-15 11:42:46 +0000 |
| commit | 98dc02192d4b10eb6057a7d6a724b2e05a5767ef (patch) | |
| tree | 00997a53ab6a4b20e8cddc842e151d32c778c271 /src/DefaultPeerStorage.cc | |
| parent | 3dfbec0f9ff13c660252d20dce17c88041280019 (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.cc | 12 |
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) { |
