diff --git a/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java index f49f0808601ee3ea4c07d1473af09e1103e0bcbd..0eaa0699181f771dab67ef87c1c254b46dcc5aa5 100644 --- a/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java +++ b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java @@ -120,8 +120,14 @@ class I2CPMessageProducer { updateBandwidth(session); CreateSessionMessage msg = new CreateSessionMessage(); SessionConfig cfg = new SessionConfig(session.getMyDestination()); - cfg.setOptions(getRouterOptions(session)); - if (session.isOffline()) { + Properties p = getRouterOptions(session); + boolean isOffline = session.isOffline(); + if (isOffline) { + if (!p.containsKey(RequestLeaseSetMessageHandler.PROP_LS_TYPE)) + p.setProperty(RequestLeaseSetMessageHandler.PROP_LS_TYPE, "3"); + } + cfg.setOptions(p); + if (isOffline) { cfg.setOfflineSignature(session.getOfflineExpiration(), session.getTransientSigningPublicKey(), session.getOfflineSignature()); diff --git a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java index 259e6d08d22392ca9240e27505fea7075111f759..bebc2cf2773bbb00ccf07e24b682cd32a821816d 100644 --- a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java +++ b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java @@ -63,7 +63,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl { private static final String PROP_LS_PK = "i2cp.leaseSetPrivateKey"; private static final String PROP_LS_SPK = "i2cp.leaseSetSigningPrivateKey"; // LS 2 - private static final String PROP_LS_TYPE = "i2cp.leaseSetType"; + public static final String PROP_LS_TYPE = "i2cp.leaseSetType"; private static final String PROP_LS_ENCTYPE = "i2cp.leaseSetEncType"; public RequestLeaseSetMessageHandler(I2PAppContext context) { diff --git a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java index c8731c6c3c3f5f1584e1251849acef7349eb8007..57c1e090b58f38eed8d8a96eba7794240b245ba3 100644 --- a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java +++ b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java @@ -289,13 +289,17 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi } } } - if ("7".equals(props.getProperty("i2cp.leaseSetType"))) { + String lsType = props.getProperty("i2cp.leaseSetType"); + if ("7".equals(lsType)) { // Prevent tunnel builds for Meta LS // more TODO props.setProperty("inbound.length", "0"); props.setProperty("outbound.length", "0"); props.setProperty("inbound.lengthVariance", "0"); props.setProperty("outbound.lengthVariance", "0"); + } else if (lsType == null && props.getProperty(SessionConfig.PROP_OFFLINE_SIGNATURE) != null) { + // force type 3 + props.setProperty("i2cp.leaseSetType", "3"); } cfg.setOptions(props); // this sets the session id