forked from I2P_Developers/i2p.i2p
SSU: Peer Test refactor
to store Bob's PeerState directly in PeerTestState prep for SSU2
This commit is contained in:
@@ -83,7 +83,7 @@ class PeerTestEvent extends SimpleTimer2.TimedEvent {
|
||||
if (bob != null) {
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Running periodic test with bob = " + bob);
|
||||
_testManager.runTest(bob.getRemoteIPAddress(), bob.getRemotePort(), bob.getCurrentCipherKey(), bob.getCurrentMACKey());
|
||||
_testManager.runTest(bob);
|
||||
setLastTested(isIPv6);
|
||||
} else {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
|
||||
@@ -177,23 +177,21 @@ class PeerTestManager {
|
||||
*
|
||||
* @param bobIP IPv4 only
|
||||
*/
|
||||
public synchronized void runTest(InetAddress bobIP, int bobPort, SessionKey bobCipherKey, SessionKey bobMACKey) {
|
||||
public synchronized void runTest(PeerState bob) {
|
||||
if (_currentTest != null) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("We are already running a test: " + _currentTest + ", aborting test with bob = " + bobIP);
|
||||
_log.warn("We are already running a test: " + _currentTest + ", aborting test with bob = " + bob);
|
||||
return;
|
||||
}
|
||||
InetAddress bobIP = bob.getRemoteIPAddress();
|
||||
if (_transport.isTooClose(bobIP.getAddress())) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn("Not running test with Bob too close to us " + bobIP);
|
||||
return;
|
||||
}
|
||||
PeerTestState test = new PeerTestState(ALICE, bobIP instanceof Inet6Address,
|
||||
PeerTestState test = new PeerTestState(ALICE, bob, bobIP instanceof Inet6Address,
|
||||
_context.random().nextLong(MAX_NONCE),
|
||||
_context.clock().now());
|
||||
test.setBobIP(bobIP);
|
||||
test.setBobPort(bobPort);
|
||||
test.setBobKeys(bobCipherKey, bobMACKey);
|
||||
_currentTest = test;
|
||||
_currentTestComplete = false;
|
||||
|
||||
@@ -702,7 +700,7 @@ class PeerTestManager {
|
||||
boolean isNew = false;
|
||||
if (state == null) {
|
||||
isNew = true;
|
||||
state = new PeerTestState(CHARLIE, sz == 16, nonce, now);
|
||||
state = new PeerTestState(CHARLIE, bob, sz == 16, nonce, now);
|
||||
} else {
|
||||
if (state.getReceiveBobTime() > now - (RESEND_TIMEOUT / 2)) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
@@ -730,10 +728,7 @@ class PeerTestManager {
|
||||
state.setAliceIP(aliceIP);
|
||||
state.setAlicePort(alicePort);
|
||||
state.setAliceIntroKey(aliceIntroKey);
|
||||
state.setBobIP(bobIP);
|
||||
state.setBobPort(from.getPort());
|
||||
state.setReceiveBobTime(now);
|
||||
state.setBobKeys(bob.getCurrentCipherKey(), bob.getCurrentMACKey());
|
||||
|
||||
// we send two packets below, but increment just once
|
||||
if (state.incrementPacketsRelayed() > MAX_RELAYED_PER_TEST_CHARLIE) {
|
||||
@@ -834,7 +829,7 @@ class PeerTestManager {
|
||||
boolean isNew = false;
|
||||
if (state == null) {
|
||||
isNew = true;
|
||||
state = new PeerTestState(BOB, isIPv6, nonce, now);
|
||||
state = new PeerTestState(BOB, null, isIPv6, nonce, now);
|
||||
} else {
|
||||
if (state.getReceiveAliceTime() > now - (RESEND_TIMEOUT / 2)) {
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
|
||||
@@ -16,8 +16,7 @@ class PeerTestState {
|
||||
private final boolean _isIPv6;
|
||||
private InetAddress _aliceIP;
|
||||
private int _alicePort;
|
||||
private InetAddress _bobIP;
|
||||
private int _bobPort;
|
||||
private final PeerState _bob;
|
||||
private InetAddress _charlieIP;
|
||||
private int _charliePort;
|
||||
private InetAddress _aliceIPFromCharlie;
|
||||
@@ -26,8 +25,6 @@ class PeerTestState {
|
||||
private SessionKey _aliceCipherKey;
|
||||
private SessionKey _aliceMACKey;
|
||||
private SessionKey _charlieIntroKey;
|
||||
private SessionKey _bobCipherKey;
|
||||
private SessionKey _bobMACKey;
|
||||
private final long _beginTime;
|
||||
private long _lastSendTime;
|
||||
private long _receiveAliceTime;
|
||||
@@ -37,8 +34,12 @@ class PeerTestState {
|
||||
|
||||
public enum Role {ALICE, BOB, CHARLIE};
|
||||
|
||||
public PeerTestState(Role role, boolean isIPv6, long nonce, long now) {
|
||||
/**
|
||||
* @param bob null if role is BOB
|
||||
*/
|
||||
public PeerTestState(Role role, PeerState bob, boolean isIPv6, long nonce, long now) {
|
||||
_ourRole = role;
|
||||
_bob = bob;
|
||||
_isIPv6 = isIPv6;
|
||||
_testNonce = nonce;
|
||||
_beginTime = now;
|
||||
@@ -63,8 +64,7 @@ class PeerTestState {
|
||||
*/
|
||||
public InetAddress getAliceIP() { return _aliceIP; }
|
||||
public void setAliceIP(InetAddress ip) { _aliceIP = ip; }
|
||||
public InetAddress getBobIP() { return _bobIP; }
|
||||
public void setBobIP(InetAddress ip) { _bobIP = ip; }
|
||||
public InetAddress getBobIP() { return _bob.getRemoteIPAddress(); }
|
||||
public InetAddress getCharlieIP() { return _charlieIP; }
|
||||
public void setCharlieIP(InetAddress ip) { _charlieIP = ip; }
|
||||
public InetAddress getAliceIPFromCharlie() { return _aliceIPFromCharlie; }
|
||||
@@ -77,8 +77,7 @@ class PeerTestState {
|
||||
*/
|
||||
public int getAlicePort() { return _alicePort; }
|
||||
public void setAlicePort(int alicePort) { _alicePort = alicePort; }
|
||||
public int getBobPort() { return _bobPort; }
|
||||
public void setBobPort(int bobPort) { _bobPort = bobPort; }
|
||||
public int getBobPort() { return _bob.getRemotePort(); }
|
||||
public int getCharliePort() { return _charliePort; }
|
||||
public void setCharliePort(int charliePort) { _charliePort = charliePort; }
|
||||
|
||||
@@ -111,19 +110,9 @@ class PeerTestState {
|
||||
public SessionKey getCharlieIntroKey() { return _charlieIntroKey; }
|
||||
public void setCharlieIntroKey(SessionKey key) { _charlieIntroKey = key; }
|
||||
|
||||
public SessionKey getBobCipherKey() { return _bobCipherKey; }
|
||||
public SessionKey getBobMACKey() { return _bobMACKey; }
|
||||
public SessionKey getBobCipherKey() { return _bob.getCurrentCipherKey(); }
|
||||
public SessionKey getBobMACKey() { return _bob.getCurrentMACKey(); }
|
||||
|
||||
/**
|
||||
* @param ck cipher key
|
||||
* @param mk MAC key
|
||||
* @since 0.9.52
|
||||
*/
|
||||
public void setBobKeys(SessionKey ck, SessionKey mk) {
|
||||
_bobCipherKey = ck;
|
||||
_bobMACKey = mk;
|
||||
}
|
||||
|
||||
/** when did this test begin? */
|
||||
public long getBeginTime() { return _beginTime; }
|
||||
|
||||
@@ -159,8 +148,8 @@ class PeerTestState {
|
||||
buf.append("; Alice: ").append(_aliceIP).append(':').append(_alicePort);
|
||||
if (_aliceIPFromCharlie != null)
|
||||
buf.append(" (fromCharlie ").append(_aliceIPFromCharlie).append(':').append(_alicePortFromCharlie).append(')');
|
||||
if (_bobIP != null)
|
||||
buf.append("; Bob: ").append(_bobIP).append(':').append(_bobPort);
|
||||
if (_bob != null)
|
||||
buf.append("; Bob: ").append(_bob.toString());
|
||||
if (_charlieIP != null)
|
||||
buf.append(" Charlie: ").append(_charlieIP).append(':').append(_charliePort);
|
||||
if (_lastSendTime > 0)
|
||||
|
||||
Reference in New Issue
Block a user