From 5440a3402fa7d70914a889d1bb8461314614f278 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Thu, 21 Feb 2019 16:16:27 +0000 Subject: [PATCH] I2CP: Force i2cp.leaseSetType option for offline keys --- .../src/net/i2p/client/impl/I2CPMessageProducer.java | 10 ++++++++-- .../i2p/client/impl/RequestLeaseSetMessageHandler.java | 2 +- .../i2p/router/client/ClientMessageEventListener.java | 6 +++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java index f49f080860..0eaa069918 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 259e6d08d2..bebc2cf277 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 c8731c6c3c..57c1e090b5 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 -- GitLab