From 43a5998cfd77a856492091625c69cc3989f76a88 Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Wed, 8 Jun 2022 11:31:42 -0400
Subject: [PATCH] SSU2: Set timer to remove peer test state

Reduce SSU 1/2 max test time as Bob
---
 .../router/transport/udp/PeerTestManager.java | 20 ++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
index 7d1c96eb06..59e487dcd5 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java
@@ -153,6 +153,8 @@ class PeerTestManager {
     
     /** longest we will keep track of a Charlie nonce for */
     private static final int MAX_CHARLIE_LIFETIME = 15*1000;
+    /** longest we will keep track of test as Bob to forward response from Charlie */
+    private static final int MAX_BOB_LIFETIME = 10*1000;
 
     /** as Bob/Charlie */
     private static final int MAX_ACTIVE_TESTS = 20;
@@ -1035,6 +1037,7 @@ class PeerTestManager {
                 state.setReceiveAliceTime(now);
                 state.setLastSendTime(now);
                 _activeTests.put(lNonce, state);
+                _context.simpleTimer2().addEvent(new RemoveTest(lNonce), MAX_BOB_LIFETIME);
                 // send alice RI to charlie
                 if (_log.shouldDebug())
                     _log.debug("Send Alice RI and msg 2 to charlie on " + state);
@@ -1110,6 +1113,7 @@ class PeerTestManager {
                     state.setReceiveBobTime(now);
                     state.setLastSendTime(now);
                     _activeTests.put(lNonce, state);
+                    _context.simpleTimer2().addEvent(new RemoveTest(lNonce), MAX_CHARLIE_LIFETIME);
                 }
                 // generate our signed data
                 // we sign it even if rejecting, not required though
@@ -1520,8 +1524,9 @@ class PeerTestManager {
                 _log.debug("Receive from Bob: " + state);
             
             if (isNew) {
-                _activeTests.put(Long.valueOf(nonce), state);
-                _context.simpleTimer2().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME);
+                Long lnonce = Long.valueOf(nonce);
+                _activeTests.put(lnonce, state);
+                _context.simpleTimer2().addEvent(new RemoveTest(lnonce), MAX_CHARLIE_LIFETIME);
             }
 
             state.setLastSendTime(now);
@@ -1632,8 +1637,9 @@ class PeerTestManager {
             }
             
             if (isNew) {
-                _activeTests.put(Long.valueOf(nonce), state);
-                _context.simpleTimer2().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME);
+                Long lnonce = Long.valueOf(nonce);
+                _activeTests.put(lnonce, state);
+                _context.simpleTimer2().addEvent(new RemoveTest(lnonce), MAX_BOB_LIFETIME);
             }
             
             state.setLastSendTime(now);
@@ -1745,14 +1751,14 @@ class PeerTestManager {
      * forget about charlie's nonce after a short while.
      */
     private class RemoveTest implements SimpleTimer.TimedEvent {
-        private final long _nonce;
+        private final Long _nonce;
 
-        public RemoveTest(long nonce) {
+        public RemoveTest(Long nonce) {
             _nonce = nonce;
         }
 
         public void timeReached() {
-                _activeTests.remove(Long.valueOf(_nonce));
+                _activeTests.remove(_nonce);
         }
     }
 
-- 
GitLab