diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessCounter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessCounter.java index 8056cf07f..42c9df84d 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessCounter.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessCounter.java @@ -28,16 +28,20 @@ class AccessCounter { /** * @param threshold definition of a threshold + * @param now current time * @return true if the given threshold has been breached */ - boolean isBreached(Threshold threshold) { + boolean isBreached(Threshold threshold, long now) { if (threshold.getConnections() == 0) return !accesses.isEmpty(); if (accesses.size() < threshold.getConnections()) return false; + long ignoreOlder = now - threshold.getSeconds() * 1000; for (int i = 0; i <= accesses.size() - threshold.getConnections(); i++) { long start = accesses.get(i); + if (start < ignoreOlder) + continue; long end = start + threshold.getSeconds() * 1000; if (accesses.get(i + threshold.getConnections() -1) <= end) return true; diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java index b0c0df117..596f26447 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/AccessFilter.java @@ -123,13 +123,14 @@ class AccessFilter implements StatefulConnectionFilter { } private void record() throws IOException { + final long now = context.clock().now(); for (Recorder recorder : definition.getRecorders()) { Threshold threshold = recorder.getThreshold(); File file = recorder.getFile(); Set breached = new HashSet(); synchronized(unknownDests) { for (DestTracker tracker : unknownDests.values()) { - if (!tracker.getCounter().isBreached(threshold)) + if (!tracker.getCounter().isBreached(threshold, now)) continue; breached.add(tracker.getHash().toBase32()); } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/DestTracker.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/DestTracker.java index 79d0c1e6e..6019d34d1 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/DestTracker.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/access/DestTracker.java @@ -36,7 +36,7 @@ class DestTracker { */ synchronized boolean recordAccess(long now) { counter.recordAccess(now); - return counter.isBreached(threshold); + return counter.isBreached(threshold,now); } synchronized boolean purge(long olderThan) {