From 809f927219df08cda3eda9478ec11087567dfb94 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 6 Dec 2022 12:30:46 -0500 Subject: [PATCH] SSU2: Post-termination handler part 5 WIP Don't create a new inbound token if we have one that's still good, for when the handler retransmits terminations --- .../router/transport/udp/EstablishmentManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 4607ca033..f1d777334 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -2668,7 +2668,16 @@ class EstablishmentManager { long expires = now + expiration; Token tok = new Token(token, expires, now); synchronized(_inboundTokens) { - _inboundTokens.put(peer, tok); + Token old = _inboundTokens.put(peer, tok); + if (old != null && old.getExpiration() > expires - 2*60*1000) { + // reuse for the case where we're retransmitting terminations + // and it expires no sooner than 2 minutes earlier + if (_log.shouldDebug()) + _log.debug("Resend inbound " + old + " for " + peer); + // put it back + _inboundTokens.put(peer, old); + return old; + } } if (_log.shouldDebug()) _log.debug("Add inbound " + tok + " for " + peer);