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
pull/1/head
Tatsuhiro Tsujikawa 2010-06-15 11:42:46 +00:00
parent 3dfbec0f9f
commit 98dc02192d
2 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,9 @@
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
2010-06-13 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Rewritten DHTMessageCallback using Visitor pattern. Eliminated

View File

@ -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) {