diff --git a/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java b/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java index 48d67b09f..b75e21919 100644 --- a/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java +++ b/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java @@ -28,24 +28,18 @@ import net.i2p.data.i2cp.SetDateMessage; */ class I2PClientMessageHandlerMap { /** map of message type id --> I2CPMessageHandler */ - protected I2CPMessageHandler _handlers[]; + protected final I2CPMessageHandler _handlers[]; /** for extension */ - public I2PClientMessageHandlerMap() {} + protected I2PClientMessageHandlerMap(int highest) { + _handlers = new I2CPMessageHandler[highest+1]; + } public I2PClientMessageHandlerMap(I2PAppContext context) { - int highest = DisconnectMessage.MESSAGE_TYPE; - highest = Math.max(highest, SessionStatusMessage.MESSAGE_TYPE); - highest = Math.max(highest, RequestLeaseSetMessage.MESSAGE_TYPE); - highest = Math.max(highest, MessagePayloadMessage.MESSAGE_TYPE); - highest = Math.max(highest, MessageStatusMessage.MESSAGE_TYPE); - highest = Math.max(highest, SetDateMessage.MESSAGE_TYPE); - highest = Math.max(highest, DestReplyMessage.MESSAGE_TYPE); - highest = Math.max(highest, HostReplyMessage.MESSAGE_TYPE); - highest = Math.max(highest, BandwidthLimitsMessage.MESSAGE_TYPE); - highest = Math.max(highest, RequestVariableLeaseSetMessage.MESSAGE_TYPE); + // 39 = highest type expected from router + // http://i2p-projekt.i2p/spec/i2cp#message-types + this(HostReplyMessage.MESSAGE_TYPE); - _handlers = new I2CPMessageHandler[highest+1]; _handlers[DisconnectMessage.MESSAGE_TYPE] = new DisconnectMessageHandler(context); _handlers[SessionStatusMessage.MESSAGE_TYPE] = new SessionStatusMessageHandler(context); _handlers[RequestLeaseSetMessage.MESSAGE_TYPE] = new RequestLeaseSetMessageHandler(context); diff --git a/core/java/src/net/i2p/client/impl/I2PSimpleSession.java b/core/java/src/net/i2p/client/impl/I2PSimpleSession.java index f7a9ca157..3c332ae0a 100644 --- a/core/java/src/net/i2p/client/impl/I2PSimpleSession.java +++ b/core/java/src/net/i2p/client/impl/I2PSimpleSession.java @@ -168,11 +168,9 @@ public class I2PSimpleSession extends I2PSessionImpl2 { */ private static class SimpleMessageHandlerMap extends I2PClientMessageHandlerMap { public SimpleMessageHandlerMap(I2PAppContext context) { - int highest = Math.max(DestReplyMessage.MESSAGE_TYPE, BandwidthLimitsMessage.MESSAGE_TYPE); - highest = Math.max(highest, DisconnectMessage.MESSAGE_TYPE); - highest = Math.max(highest, HostReplyMessage.MESSAGE_TYPE); - highest = Math.max(highest, SetDateMessage.MESSAGE_TYPE); - _handlers = new I2CPMessageHandler[highest+1]; + // 39 = highest type expected from router + // http://i2p-projekt.i2p/spec/i2cp#message-types + super(HostReplyMessage.MESSAGE_TYPE); _handlers[DestReplyMessage.MESSAGE_TYPE] = new DestReplyMessageHandler(context); _handlers[BandwidthLimitsMessage.MESSAGE_TYPE] = new BWLimitsMessageHandler(context); _handlers[DisconnectMessage.MESSAGE_TYPE] = new DisconnectMessageHandler(context);