From 8dcda34da1cc9acbc1e9f4d6e1e970dd0f13b0ba Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 8 Feb 2026 12:09:47 -0500 Subject: [PATCH] Router: More robustness fixes, bump -11-rc - Debian: Remove resolute jars from jammy source - SSU2: Increase IP table size --- build.xml | 10 ++++++++++ history.txt | 5 +++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../HandleFloodfillDatabaseStoreMessageJob.java | 5 +++++ .../router/transport/ntcp/InboundEstablishState.java | 11 +++++++++++ .../router/transport/udp/EstablishmentManager.java | 2 +- .../router/transport/udp/InboundEstablishState2.java | 12 ++++++++++++ 7 files changed, 45 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index c0fb6b135..db4267299 100644 --- a/build.xml +++ b/build.xml @@ -3009,6 +3009,11 @@ + + @@ -3079,6 +3084,11 @@ + + diff --git a/history.txt b/history.txt index c8a9f5d45..a44d0b42f 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2026-02-08 zzz + * Debian: Remove resolute jars from jammy source + * Router: More robustness fixes + * SSU2: Increase IP table size + 2026-02-06 zzz * Debian: Resolute/trixie fixes diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 60e19a327..63114b17b 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -20,7 +20,7 @@ public class RouterVersion { public final static String VERSION = CoreVersion.VERSION; /** for example: "beta", "alpha", "rc" */ public final static String QUALIFIER = "-rc"; - public final static long BUILD = 10; + public final static long BUILD = 11; /** for example "-test" */ public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + QUALIFIER + EXTRA; 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 bb0515fec..2ab7b01d2 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java @@ -256,6 +256,7 @@ class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { if (count > LIMIT_ROUTERS) { String caps = ri.getCapabilities(); boolean isU = caps.indexOf(Router.CAPABILITY_UNREACHABLE) >= 0; + boolean isG = caps.indexOf(Router.CAPABILITY_NO_TUNNELS) >= 0; boolean isFF = caps.indexOf(FloodfillNetworkDatabaseFacade.CAPABILITY_FLOODFILL) >= 0; boolean notFrom = !key.equals(_fromHash); boolean isSlow = caps.indexOf(Router.CAPABILITY_BW32) >= 0; @@ -277,6 +278,8 @@ class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { int pdrop = Math.min(110, (128 * count / LIMIT_ROUTERS) - 128); if (isU) pdrop *= 3; + if (isG) + pdrop *= 3; if (isFF) pdrop *= 3; if (notFrom) @@ -333,6 +336,8 @@ class HandleFloodfillDatabaseStoreMessageJob extends JobImpl { int pdrop = (128 * count / LIMIT_ROUTERS) - 128; if (isU) pdrop *= 3; + if (isG) + pdrop *= 3; if (isFF) pdrop *= 3; if (notFrom) diff --git a/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java index 163c9c4ae..b710ea81a 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java @@ -715,6 +715,17 @@ class InboundEstablishState extends EstablishBase implements NTCP2Payload.Payloa throw new DataFormatException("Old and slow: " + h); } + if (ri.getCapabilities().indexOf('G') >= 0 && + ri.getCapabilities().indexOf('X') >= 0 && + ri.getCapabilities().indexOf('f') >= 0 && + ri.getVersion().equals("0.9.67")) { + long time = _context.netDb().floodfillEnabled() ? 30*60*1000 : 60*60*1000; + _context.banlist().banlistRouter(h, "Refuses tunnels", null, + null, _context.clock().now() + time); + _msg3p2FailReason = NTCPConnection.REASON_BANNED; + throw new DataFormatException("Refuses tunnels: " + h); + } + try { RouterInfo old = _context.netDb().store(h, ri); if (flood && !ri.equals(old)) { diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index b5833c7d5..485ec0ac5 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -189,7 +189,7 @@ class EstablishmentManager { _liveIntroductions = new ConcurrentHashMap(); _outboundByClaimedAddress = new ConcurrentHashMap(); _outboundByHash = new ConcurrentHashMap(); - _inboundBans = new LHMCache(32); + _inboundBans = new LHMCache(128); // roughly scale based on expected traffic int tokenCacheSize = Math.max(MIN_TOKENS, Math.min(MAX_TOKENS, 3 * _transport.getMaxConnections() / 4)); _inboundTokens = new InboundTokens(tokenCacheSize); diff --git a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java index 27f4e0c2b..dea02a05c 100644 --- a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java +++ b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState2.java @@ -374,6 +374,18 @@ class InboundEstablishState2 extends InboundEstablishState implements SSU2Payloa throw new RIException("Old and slow: " + h, REASON_BANNED); } + if (ri.getCapabilities().indexOf('G') >= 0 && + ri.getCapabilities().indexOf('X') >= 0 && + ri.getCapabilities().indexOf('f') >= 0 && + ri.getVersion().equals("0.9.67")) { + long time = _context.netDb().floodfillEnabled() ? 30*60*1000 : 60*60*1000; + _context.banlist().banlistRouter(h, "Refuses tunnels", null, + null, _context.clock().now() + time); + if (ri.verifySignature()) + _context.blocklist().add(_aliceIP); + throw new RIException("Refuses tunnels: " + h, REASON_BANNED); + } + String smtu = ra.getOption(UDPAddress.PROP_MTU); int mtu = 0; try {