forked from I2P_Developers/i2p.i2p
* HandleFloodfillDatabaseLookupMessageJob:
- Send back your routerinfo with the DSRM if not ff to spread the word that you aren't ff anymore - Fix behavior when router.isHidden=true
This commit is contained in:
@@ -82,7 +82,7 @@ public class HandleDatabaseLookupMessageJob extends JobImpl {
|
||||
}
|
||||
|
||||
// If we are hidden we should not get queries, log and return
|
||||
if (getContext().router().getRouterInfo().isHidden()) {
|
||||
if (getContext().router().isHidden()) {
|
||||
if (_log.shouldLog(Log.ERROR)) {
|
||||
_log.error("Uninvited dbLookup received with replies going to " + fromKey
|
||||
+ " (tunnel " + _message.getReplyTunnel() + ")");
|
||||
@@ -211,7 +211,7 @@ public class HandleDatabaseLookupMessageJob extends JobImpl {
|
||||
sendMessage(msg, toPeer, replyTunnel);
|
||||
}
|
||||
|
||||
private void sendClosest(Hash key, Set routerInfoSet, Hash toPeer, TunnelId replyTunnel) {
|
||||
protected void sendClosest(Hash key, Set routerInfoSet, Hash toPeer, TunnelId replyTunnel) {
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Sending closest routers to key " + key.toBase64() + ": # peers = "
|
||||
+ routerInfoSet.size() + " tunnel " + replyTunnel);
|
||||
@@ -228,7 +228,7 @@ public class HandleDatabaseLookupMessageJob extends JobImpl {
|
||||
sendMessage(msg, toPeer, replyTunnel); // should this go via garlic messages instead?
|
||||
}
|
||||
|
||||
private void sendMessage(I2NPMessage message, Hash toPeer, TunnelId replyTunnel) {
|
||||
protected void sendMessage(I2NPMessage message, Hash toPeer, TunnelId replyTunnel) {
|
||||
if (replyTunnel != null) {
|
||||
sendThroughTunnel(message, toPeer, replyTunnel);
|
||||
} else {
|
||||
|
@@ -8,12 +8,18 @@ package net.i2p.router.networkdb.kademlia;
|
||||
*
|
||||
*/
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import net.i2p.data.Hash;
|
||||
import net.i2p.data.RouterIdentity;
|
||||
import net.i2p.data.RouterInfo;
|
||||
import net.i2p.data.TunnelId;
|
||||
import net.i2p.data.i2np.DatabaseStoreMessage;
|
||||
import net.i2p.data.i2np.DatabaseLookupMessage;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.router.networkdb.HandleDatabaseLookupMessageJob;
|
||||
|
||||
|
||||
/**
|
||||
* Handle a lookup for a key received from a remote peer. Needs to be implemented
|
||||
* to send back replies, etc
|
||||
@@ -28,4 +34,25 @@ public class HandleFloodfillDatabaseLookupMessageJob extends HandleDatabaseLooku
|
||||
if (!FloodfillNetworkDatabaseFacade.floodfillEnabled(getContext())) return false;
|
||||
return FloodfillNetworkDatabaseFacade.isFloodfill(getContext().router().getRouterInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* We extend this here to send our routerInfo back as well, if we are not floodfill.
|
||||
* This gets the word out to routers that we are no longer floodfill, so they
|
||||
* will stop bugging us.
|
||||
*/
|
||||
protected void sendClosest(Hash key, Set routerInfoSet, Hash toPeer, TunnelId replyTunnel) {
|
||||
super.sendClosest(key, routerInfoSet, toPeer, replyTunnel);
|
||||
|
||||
// go away, you got the wrong guy, send our RI back unsolicited
|
||||
if (!FloodfillNetworkDatabaseFacade.floodfillEnabled(getContext())) {
|
||||
// We could just call sendData(myhash, myri, toPeer, replyTunnel) but
|
||||
// that would increment the netDb.lookupsHandled and netDb.lookupsMatched stats
|
||||
DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext());
|
||||
RouterInfo me = getContext().router().getRouterInfo();
|
||||
msg.setKey(me.getIdentity().getHash());
|
||||
msg.setRouterInfo(me);
|
||||
msg.setValueType(DatabaseStoreMessage.KEY_TYPE_ROUTERINFO);
|
||||
sendMessage(msg, toPeer, replyTunnel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user