diff --git a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java index 8958c64e1341090cfdf2f1b15d59191ac8c6b171..bf0faad97b4fa7fa80d6fc958eda39b9f052f75f 100644 --- a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java +++ b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java @@ -36,6 +36,8 @@ class BloomFilterIVValidator implements IVValidator { private static final long MIN_MEM_FOR_HUGE2_BLOOM = 384*1024*1024l; /** for testing */ private static final String PROP_FORCE = "router.forceDecayingBloomFilter"; + /** for testing */ + private static final String PROP_DISABLE = "router.disableDecayingBloomFilter"; /** * @param Kbps share bandwidth @@ -49,6 +51,8 @@ class BloomFilterIVValidator implements IVValidator { long maxMemory = SystemVersion.getMaxMemory(); if (_context.getBooleanProperty(PROP_FORCE)) { _filter = new DecayingBloomFilter(ctx, HALFLIFE_MS, 16, "TunnelIVV"); // 2MB fixed + } else if (_context.getBooleanProperty(PROP_DISABLE)) { + _filter = null; } else if (KBps < MIN_SHARE_KBPS_TO_USE_BLOOM || maxMemory < MIN_MEM_TO_USE_BLOOM) { if (KBps >= MIN_SHARE_KBPS_TO_USE_BLOOM) warn(maxMemory, KBps, MIN_MEM_TO_USE_BLOOM, MIN_SHARE_KBPS_TO_USE_BLOOM); @@ -73,6 +77,8 @@ class BloomFilterIVValidator implements IVValidator { } public boolean receiveIV(byte ivData[], int ivOffset, byte payload[], int payloadOffset) { + if (_filter == null) // testing only + return true; byte[] buf = SimpleByteCache.acquire(HopProcessor.IV_LENGTH); DataHelper.xor(ivData, ivOffset, payload, payloadOffset, buf, 0, HopProcessor.IV_LENGTH); boolean dup = _filter.add(buf); @@ -81,7 +87,10 @@ class BloomFilterIVValidator implements IVValidator { return !dup; // return true if it is OK, false if it isn't } - public void destroy() { _filter.stopDecaying(); } + public void destroy() { + if (_filter != null) + _filter.stopDecaying(); + } /** @since 0.9.20 */ private void warn(long maxMemory, int KBps, long recMaxMem, int threshKBps) {