Drop old node from DHT routing table if node ID has changed.

pull/1/head
Tatsuhiro Tsujikawa 2011-01-07 00:20:58 +09:00
parent 653951f70a
commit 2dba2f86a4
1 changed files with 10 additions and 0 deletions

View File

@ -90,6 +90,16 @@ DHTMessageTracker::messageArrived
A2_LOG_DEBUG(fmt("RTT is %s", util::itos(rtt).c_str()));
message->getRemoteNode()->updateRTT(rtt);
SharedHandle<DHTMessageCallback> callback = entry->getCallback();
if(!(*targetNode == *message->getRemoteNode())) {
// Node ID has changed. Drop previous node ID from
// DHTRoutingTable
A2_LOG_DEBUG
(fmt("Node ID has changed: old:%s, new:%s",
util::toHex(targetNode->getID(), DHT_ID_LENGTH).c_str(),
util::toHex(message->getRemoteNode()->getID(),
DHT_ID_LENGTH).c_str()));
routingTable_->dropNode(targetNode);
}
return std::make_pair(message, callback);
} catch(RecoverableException& e) {
handleTimeoutEntry(entry);