summaryrefslogtreecommitdiff
path: root/src/DHTMessageTracker.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DHTMessageTracker.cc')
-rw-r--r--src/DHTMessageTracker.cc15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/DHTMessageTracker.cc b/src/DHTMessageTracker.cc
index 2f84c1a0..970ddf0e 100644
--- a/src/DHTMessageTracker.cc
+++ b/src/DHTMessageTracker.cc
@@ -82,7 +82,7 @@ DHTMessageTracker::messageArrived(const BDE& dict,
util::toHex(tid.s()).c_str(), ipaddr.c_str(), port);
}
for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::iterator i =
- _entries.begin(); i != _entries.end(); ++i) {
+ _entries.begin(), eoi = _entries.end(); i != eoi; ++i) {
if((*i)->match(tid.s(), ipaddr, port)) {
SharedHandle<DHTMessageTrackerEntry> entry = *i;
_entries.erase(i);
@@ -113,12 +113,13 @@ DHTMessageTracker::messageArrived(const BDE& dict,
void DHTMessageTracker::handleTimeout()
{
- for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::iterator i = _entries.begin();
- i != _entries.end();) {
+ for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::iterator i =
+ _entries.begin(), eoi = _entries.end(); i != eoi;) {
if((*i)->isTimeout()) {
try {
SharedHandle<DHTMessageTrackerEntry> entry = *i;
i = _entries.erase(i);
+ eoi = _entries.end();
SharedHandle<DHTNode> node = entry->getTargetNode();
if(_logger->debug()) {
_logger->debug("Message timeout: To:%s:%u",
@@ -149,9 +150,11 @@ void DHTMessageTracker::handleTimeout()
SharedHandle<DHTMessageTrackerEntry>
DHTMessageTracker::getEntryFor(const SharedHandle<DHTMessage>& message) const
{
- for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::const_iterator i = _entries.begin();
- i != _entries.end(); ++i) {
- if((*i)->match(message->getTransactionID(), message->getRemoteNode()->getIPAddress(), message->getRemoteNode()->getPort())) {
+ for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::const_iterator i =
+ _entries.begin(), eoi = _entries.end(); i != eoi; ++i) {
+ if((*i)->match(message->getTransactionID(),
+ message->getRemoteNode()->getIPAddress(),
+ message->getRemoteNode()->getPort())) {
return *i;
}
}