diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-07 00:20:58 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2011-01-07 00:20:58 +0900 |
| commit | 2dba2f86a43414d706287a5a0fa12aa6573a59d2 (patch) | |
| tree | 8d6f5bb6ef6b4e26281a2ca1131904b01b3442ef /src/DHTMessageTracker.cc | |
| parent | 653951f70aeca5dac555efb623e2eaf6bbbca47f (diff) | |
Drop old node from DHT routing table if node ID has changed.
Diffstat (limited to 'src/DHTMessageTracker.cc')
| -rw-r--r-- | src/DHTMessageTracker.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/DHTMessageTracker.cc b/src/DHTMessageTracker.cc index 7709165e..d93c8213 100644 --- a/src/DHTMessageTracker.cc +++ b/src/DHTMessageTracker.cc @@ -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); |
