From 26b90b9d17f5e046b4b5c32a270c18e806f81717 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 8 Apr 2020 15:36:36 +0000 Subject: [PATCH] NTCP: More EnumSets --- .../net/i2p/router/transport/ntcp/EstablishBase.java | 8 ++++++-- .../src/net/i2p/router/transport/ntcp/EventPumper.java | 10 +++++----- .../router/transport/ntcp/InboundEstablishState.java | 7 +++---- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishBase.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishBase.java index de10dce689..d84a78c997 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishBase.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishBase.java @@ -1,6 +1,8 @@ package net.i2p.router.transport.ntcp; import java.nio.ByteBuffer; +import java.util.EnumSet; +import java.util.Set; import net.i2p.router.Router; import net.i2p.router.RouterContext; @@ -173,6 +175,8 @@ abstract class EstablishBase implements EstablishState { CORRUPT } + protected static final Set<State> STATES_DONE = EnumSet.of(State.VERIFIED, State.CORRUPT); + private EstablishBase() { _context = null; _log = null; @@ -228,7 +232,7 @@ abstract class EstablishBase implements EstablishState { */ public synchronized void receive(ByteBuffer src) { synchronized(_stateLock) { - if (_state == State.VERIFIED || _state == State.CORRUPT) + if (STATES_DONE.contains(_state)) throw new IllegalStateException(prefix() + "received unexpected data on " + _con); } if (_log.shouldLog(Log.DEBUG)) @@ -287,7 +291,7 @@ abstract class EstablishBase implements EstablishState { /** Caller must synch. */ protected void fail(String reason, Exception e, boolean bySkew) { synchronized(_stateLock) { - if (_state == State.CORRUPT || _state == State.VERIFIED) + if (STATES_DONE.contains(_state)) return; changeState(State.CORRUPT); } diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index f5566a636d..10612b8a36 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -16,6 +16,7 @@ import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.channels.UnresolvedAddressException; +import java.util.EnumSet; import java.util.Iterator; import java.util.Queue; import java.util.Set; @@ -112,6 +113,9 @@ class EventPumper implements Runnable { private static final TryCache<ByteBuffer> _bufferCache = new TryCache<>(new BufferFactory(), MIN_BUFS); + private static final Set<Status> STATUS_OK = + EnumSet.of(Status.OK, Status.IPV4_OK_IPV6_UNKNOWN, Status.IPV4_OK_IPV6_FIREWALLED); + public EventPumper(RouterContext ctx, NTCPTransport transport) { _context = ctx; _log = ctx.logManager().getLog(getClass()); @@ -576,11 +580,7 @@ class EventPumper implements Runnable { if (chan.socket().getInetAddress() instanceof Inet6Address) return false; Status status = _context.commSystem().getStatus(); - if (status == Status.OK || - status == Status.IPV4_OK_IPV6_UNKNOWN || - status == Status.IPV4_OK_IPV6_FIREWALLED) - return false; - return true; + return !STATUS_OK.contains(status); } /** 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 e84400e528..067ecad53e 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/InboundEstablishState.java @@ -88,6 +88,7 @@ class InboundEstablishState extends EstablishBase implements NTCP2Payload.Payloa private static final Set<State> STATES_NTCP2 = EnumSet.of(State.IB_NTCP2_INIT, State.IB_NTCP2_GOT_X, State.IB_NTCP2_GOT_PADDING, State.IB_NTCP2_SENT_Y, State.IB_NTCP2_GOT_RI, State.IB_NTCP2_READ_RANDOM); + private static final Set<State> STATES_MSG3 = EnumSet.of(State.IB_SENT_Y, State.IB_GOT_RI_SIZE, State.IB_GOT_RI); public InboundEstablishState(RouterContext ctx, NTCPTransport transport, NTCPConnection con) { @@ -270,9 +271,7 @@ class InboundEstablishState extends EstablishBase implements NTCP2Payload.Payloa } // ok, we are onto the encrypted area, i.e. Message #3 - while ((_state == State.IB_SENT_Y || - _state == State.IB_GOT_RI_SIZE || - _state == State.IB_GOT_RI) && src.hasRemaining()) { + while (STATES_MSG3.contains(_state) && src.hasRemaining()) { // Collect a 16-byte block if (_received < AES_SIZE && src.hasRemaining()) { @@ -370,7 +369,7 @@ class InboundEstablishState extends EstablishBase implements NTCP2Payload.Payloa } // check for remaining data - if ((_state == State.VERIFIED || _state == State.CORRUPT) && src.hasRemaining()) { + if (STATES_DONE.contains(_state) && src.hasRemaining()) { if (_log.shouldWarn()) _log.warn("Received unexpected " + src.remaining() + " on " + this, new Exception()); } -- GitLab