diff --git a/router/java/src/net/i2p/router/sybil/Analysis.java b/router/java/src/net/i2p/router/sybil/Analysis.java index fc826406b8f00c7be2ee56da65cdf684bb6e07a3..c3f86ae190b8770a79103782df240855936175f0 100644 --- a/router/java/src/net/i2p/router/sybil/Analysis.java +++ b/router/java/src/net/i2p/router/sybil/Analysis.java @@ -96,7 +96,8 @@ public class Analysis extends JobImpl implements RouterApp { public static final boolean DEFAULT_BLOCK = true; public static final double DEFAULT_BLOCK_THRESHOLD = 50.0; public static final long DEFAULT_BLOCK_TIME = 7*24*60*60*1000L; - public static final long DEFAULT_REMOVE_TIME = 30*24*60*60*1000L; + public static final long DEFAULT_REMOVE_TIME = 10*24*60*60*1000L; + public static final long SHORT_REMOVE_TIME = 2*24*60*60*1000L; public static final long DEFAULT_FREQUENCY = 24*60*60*1000L; public static final float MIN_BLOCK_POINTS = 12.01f; diff --git a/router/java/src/net/i2p/router/sybil/PersistSybil.java b/router/java/src/net/i2p/router/sybil/PersistSybil.java index a79d1a0e8428aeca0712d343649f6b19964e3af8..fb97013ad421148601d405ee2e45f02f2bf3d92a 100644 --- a/router/java/src/net/i2p/router/sybil/PersistSybil.java +++ b/router/java/src/net/i2p/router/sybil/PersistSybil.java @@ -19,6 +19,8 @@ import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import net.i2p.I2PAppContext; +import net.i2p.app.ClientApp; +import net.i2p.app.ClientAppManager; import net.i2p.data.Base64; import net.i2p.data.DataFormatException; import net.i2p.data.DataHelper; @@ -179,7 +181,18 @@ public class PersistSybil { * @since 0.9.41 */ public synchronized void removeOld() { - long age = _context.getProperty(Analysis.PROP_REMOVETIME, Analysis.DEFAULT_REMOVE_TIME); + // if we don't have a console, don't keep too many + long removeTime = Analysis.SHORT_REMOVE_TIME; + ClientAppManager cmgr = _context.clientAppManager(); + if (cmgr != null) { + ClientApp console = cmgr.getRegisteredApp("console"); + if (console != null) + removeTime = Analysis.DEFAULT_REMOVE_TIME; + } + long age = _context.getProperty(Analysis.PROP_REMOVETIME, removeTime); + long freq2 = 2 * _context.getProperty(Analysis.PROP_FREQUENCY, Analysis.DEFAULT_FREQUENCY); + if (age < freq2) + age = freq2; if (age < 60*1000) return; long cutoff = _context.clock().now() - age;