Merge branch 'i2p.i2p.2.4.0-revert-buildhandler-changes' into 'master'

Router: remove commented out ban strategy and ratestats for tunnels that disrespect congestion caps

Closes #413

See merge request i2p-hackers/i2p.i2p!142
This commit is contained in:
idk
2023-11-03 15:03:12 +00:00

View File

@@ -7,11 +7,9 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicInteger;
import net.i2p.crypto.EncType;
import net.i2p.data.Base64;
import net.i2p.data.DataHelper;
import net.i2p.data.EmptyProperties;
import net.i2p.data.Hash;
import net.i2p.data.i2np.DatabaseStoreMessage;
import net.i2p.data.router.RouterIdentity;
import net.i2p.data.router.RouterInfo;
import net.i2p.data.TunnelId;
@@ -31,7 +29,6 @@ import net.i2p.router.HandlerJobBuilder;
import net.i2p.router.Job;
import net.i2p.router.JobImpl;
import net.i2p.router.OutNetMessage;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.networkdb.kademlia.MessageWrapper;
import net.i2p.router.peermanager.TunnelHistory;
@@ -39,11 +36,7 @@ import net.i2p.router.tunnel.HopConfig;
import net.i2p.router.tunnel.TunnelDispatcher;
import static net.i2p.router.tunnel.pool.BuildExecutor.Result.*;
import net.i2p.router.util.CDQEntry;
import net.i2p.router.util.CoDelBlockingQueue;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.util.Log;
import net.i2p.util.VersionComparator;
/**
* Handle the received tunnel build message requests and replies,
@@ -77,7 +70,6 @@ class BuildHandler implements Runnable {
private volatile boolean _isRunning;
private final Object _startupLock = new Object();
private ExplState _explState = ExplState.NONE;
private final String MIN_VERSION_HONOR_CAPS = "0.9.58";
private enum ExplState { NONE, IB, OB, BOTH }
@@ -474,52 +466,6 @@ class BuildHandler implements Runnable {
_context.commSystem().mayDisconnect(from);
return -1;
}
// get my own RouterInfo
RouterInfo myRI = _context.router().getRouterInfo();
if (myRI != null) {
String caps = myRI.getCapabilities();
if (caps != null) {
if (caps.indexOf(Router.CAPABILITY_NO_TUNNELS) >= 0){
_context.statManager().addRateData("tunnel.dropTunnelFromCongestionCapability", 1);
if (_log.shouldLog(Log.WARN))
_log.warn("Drop request, we are denying tunnels due to congestion: " + from);
RouterInfo fromRI = _context.netDb().lookupRouterInfoLocally(from);
if (fromRI != null){
String fromVersion = fromRI.getVersion();
// if fromVersion is greater than 0.9.58, then then ban the router due to it disrespecting our
// congestion flags
if (fromVersion != null){
if (VersionComparator.comp(fromVersion, MIN_VERSION_HONOR_CAPS) >= 0) {
_context.statManager().addRateData("tunnel.dropTunnelFromCongestionCapability"+from, 1);
_context.statManager().addRateData("tunnel.dropTunnelFromCongestionCapability"+fromVersion, 1);
/*
TODO: Determine if it's at all reasonable to do something about routers that are forwarding tunnel
builds to us from other people who are spamming tunnel builds.
long knocks = _context.statManager().getRate("tunnel.dropTunnelFromVersion"+from).getLifetimeEventCount();
if (knocks > 10) {
if (_log.shouldLog(Log.WARN))
_log.warn("Banning peer: " + fromRI.getHash() + " due to it disrespecting our congestion flags");
_context.banlist().banlistRouter(from, "disrespected our tunnel flags", null, false);
} else if (knocks <= 1) {
if (_log.shouldLog(Log.WARN))
_log.warn("Replying with our RouterInfo to peer:" +fromRI.getHash() +
" to give it a chance to update their own netDb and stop asking for new tunnels");
// send the peer our RouterInfo
int TIMEOUT = 10*1000;
DatabaseStoreMessage dsm = new DatabaseStoreMessage(_context);
dsm.setMessageExpiration(_context.clock().now() + TIMEOUT);
dsm.setEntry(myRI);
OutNetMessage outMsg = new OutNetMessage(_context, dsm, _context.clock().now() + TIMEOUT, PRIORITY, fromRI);
_context.outNetMessagePool().add(outMsg);
}
*/
}
}
}
return -1;
}
}
}
if (timeSinceReceived > (BuildRequestor.REQUEST_TIMEOUT*3)) {
// don't even bother, since we are so overloaded locally