diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java index 1c1fd7e5ab2197271dfd16aaee6507f8bfea492c..20a6b490293439d05bf6c031e73f7066acfac335 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseLookupMessageHandler.java @@ -83,38 +83,6 @@ public class FloodfillDatabaseLookupMessageHandler implements HandlerJobBuilder _context.statManager().addRateData("netDb.nonFFLookupsDropped", 1); return null; } - - // Implementation of the banning of routers based on excessive burst DLM - // is pending a reliable way to discriminate between DLM that are sent - // and replied directly, and DLM that are forwarded by a router OBEP. - /***** - if (_facade.shouldBanLookup(dlm.getFrom(), dlm.getReplyTunnel())) { - if (_log.shouldLog(Log.WARN)) { - _log.warn("[dbid: " + _facade._dbid - + "] Possibly throttling " + dlm.getSearchType() - + " lookup request for " + dlm.getSearchKey() - + " because requests are being sent extremely fast, reply was to: " - + dlm.getFrom() + " tunnel: " + dlm.getReplyTunnel()); - _context.statManager().addRateData("netDb.repeatedLookupsDropped", 1); - } - } - if (_facade.shouldBanBurstLookup(dlm.getFrom(), dlm.getReplyTunnel())) { - if (_log.shouldLog(Log.WARN)) { - _log.warn("[dbid: " + _facade._dbid - + "] Banning " + dlm.getSearchType() - + " lookup request for " + dlm.getSearchKey() - + " because requests are being sent extremely fast in a very short time, reply was to: " - + dlm.getFrom() + " tunnel: " + dlm.getReplyTunnel()); - _context.statManager().addRateData("netDb.repeatedBurstLookupsDropped", 1); - } - _context.banlist().banlistRouter(dlm.getFrom(), " <b>➜</b> Excessive lookup requests, burst", null, - _context.banlist().BANLIST_CODE_HARD, null, - _context.clock().now() + 4*60*60*1000); - _context.commSystem().mayDisconnect(dlm.getFrom()); - _context.statManager().addRateData("netDb.lookupsDropped", 1); - return null; - } - *****/ if ((!_facade.shouldThrottleLookup(dlm.getFrom(), dlm.getReplyTunnel()) && !_facade.shouldThrottleBurstLookup(dlm.getFrom(), dlm.getReplyTunnel())) || _context.routerHash().equals(dlm.getFrom())) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index f4df9fb47084ae52a9f2f39e9cc408eee0f33e43..a1f015aa3bf04910753715f3c502dc6709069617 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -42,13 +42,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad private FloodThrottler _floodThrottler; private LookupThrottler _lookupThrottler; private LookupThrottler _lookupThrottlerBurst; - private LookupThrottler _lookupBanner; - private LookupThrottler _lookupBannerBurst; private final Job _ffMonitor; - private final int BAN_LOOKUP_BASE = 75; - private final int BAN_LOOKUP_BASE_INTERVAL = 5*60*1000; - private final int BAN_LOOKUP_BURST = 10; - private final int BAN_LOOKUP_BURST_INTERVAL = 15*1000; private final int DROP_LOOKUP_BURST = 10; private final int DROP_LOOKUP_BURST_INTERVAL = 30*1000; @@ -103,15 +97,15 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad super.startup(); if (_ffMonitor != null) _context.jobQueue().addJob(_ffMonitor); - if (!super.isMainDb()) + if (!super.isMainDb()){ isFF = false; - else + _lookupThrottler = null; + _lookupThrottlerBurst = null; + } else { isFF = _context.getBooleanProperty(FloodfillMonitorJob.PROP_FLOODFILL_PARTICIPANT); - - _lookupThrottler = new LookupThrottler(); - _lookupBanner = new LookupThrottler(BAN_LOOKUP_BASE, BAN_LOOKUP_BASE_INTERVAL); - _lookupThrottlerBurst = new LookupThrottler(DROP_LOOKUP_BURST, DROP_LOOKUP_BURST_INTERVAL); - _lookupBannerBurst = new LookupThrottler(BAN_LOOKUP_BURST, BAN_LOOKUP_BURST_INTERVAL); + _lookupThrottler = new LookupThrottler(); + _lookupThrottlerBurst = new LookupThrottler(DROP_LOOKUP_BURST, DROP_LOOKUP_BURST_INTERVAL); + } long down = _context.router().getEstimatedDowntime(); if (!_context.commSystem().isDummy() && @@ -262,21 +256,11 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad return _lookupThrottler == null || _lookupThrottler.shouldThrottle(from, id); } - boolean shouldBanLookup(Hash from, TunnelId id) { - // null before startup - return _lookupBanner == null || _lookupBanner.shouldThrottle(from, id); - } - boolean shouldThrottleBurstLookup(Hash from, TunnelId id) { // null before startup return _lookupThrottler == null || _lookupThrottlerBurst.shouldThrottle(from, id); } - boolean shouldBanBurstLookup(Hash from, TunnelId id) { - // null before startup - return _lookupBanner == null || _lookupBannerBurst.shouldThrottle(from, id); - } - /** * If we are floodfill AND the key is not throttled, * flood it, otherwise don't. diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java index 766d9469921106f197df44d18745f83dc026a50f..24753f3a12d116d4d315380c3811e7f15cbe813a 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -148,11 +148,13 @@ class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { blockStore = false; if (blockStore) { getContext().statManager().addRateData("netDb.storeLocalLeaseSetAttempt", 1, 0); - // throw rather than return, so that we send the ack below (prevent easy attack) + // If we're using subdbs, store the leaseSet in the multihome DB. + // otherwise, throw rather than return, so that we send the ack below (prevent easy attack) dontBlamePeer = true; if (getContext().netDbSegmentor().useSubDbs()) getContext().multihomeNetDb().store(key, ls); - throw new IllegalArgumentException("(dbid: " + _facade._dbid + else + throw new IllegalArgumentException("(dbid: " + _facade._dbid + ") Peer attempted to store local leaseSet: " + key.toBase32()); }