Compare commits

...

1 Commits

Author SHA1 Message Date
zzz
76be323557 I2CP: Add support for service records (proposal 167)
Some checks failed
Java CI / build (push) Has been cancelled
Java CI / javadoc-latest (push) Has been cancelled
Java CI / build-java7 (push) Has been cancelled
Java with IzPack Snapshot Setup / setup (push) Has been cancelled
2025-04-26 14:26:47 -04:00
2 changed files with 43 additions and 0 deletions

View File

@@ -48,6 +48,7 @@ import net.i2p.data.SimpleDataStructure;
import net.i2p.data.i2cp.I2CPMessage;
import net.i2p.data.i2cp.RequestLeaseSetMessage;
import net.i2p.util.Log;
import net.i2p.util.OrderedProperties;
/**
* Handle I2CP RequestLeaseSetMessage from the router by granting all leases,
@@ -144,6 +145,25 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
}
if (Boolean.parseBoolean(session.getOptions().getProperty("i2cp.dontPublishLeaseSet")))
ls2.setUnpublished();
// Service records, proposal 167
String k = "i2cp.leaseSetOption.0";
Properties props = null;
for (int i = 0; i < 10; i++) {
String v = session.getOptions().getProperty(k);
if (v == null)
break;
String[] vs = DataHelper.split(v, "=", 2);
if (vs.length < 2)
continue;
if (props == null)
props = new OrderedProperties();
props.setProperty(vs[0], vs[1]);
k = "i2cp.leaseSetOption." + (i + 1);
}
if (props != null)
ls2.setOptions(props);
// ensure 1-second resolution timestamp is higher than last one
long now = Math.max(_context.clock().now(), session.getLastLS2SignTime() + 1000);
ls2.setPublished(now);

View File

@@ -9,8 +9,11 @@ package net.i2p.client.impl;
*
*/
import java.util.Properties;
import net.i2p.I2PAppContext;
import net.i2p.data.DatabaseEntry;
import net.i2p.data.DataHelper;
import net.i2p.data.EncryptedLeaseSet;
import net.i2p.data.Lease;
import net.i2p.data.Lease2;
@@ -21,6 +24,7 @@ import net.i2p.data.MetaLeaseSet;
import net.i2p.data.i2cp.I2CPMessage;
import net.i2p.data.i2cp.RequestVariableLeaseSetMessage;
import net.i2p.util.Log;
import net.i2p.util.OrderedProperties;
/**
* Handle I2CP RequestVariableLeaseSetMessage from the router by granting all leases,
@@ -56,6 +60,25 @@ class RequestVariableLeaseSetMessageHandler extends RequestLeaseSetMessageHandle
}
if (Boolean.parseBoolean(session.getOptions().getProperty("i2cp.dontPublishLeaseSet")))
ls2.setUnpublished();
// Service records, proposal 167
String k = "i2cp.leaseSetOption.0";
Properties props = null;
for (int i = 0; i < 10; i++) {
String v = session.getOptions().getProperty(k);
if (v == null)
break;
String[] vs = DataHelper.split(v, "=", 2);
if (vs.length < 2)
continue;
if (props == null)
props = new OrderedProperties();
props.setProperty(vs[0], vs[1]);
k = "i2cp.leaseSetOption." + (i + 1);
}
if (props != null)
ls2.setOptions(props);
// ensure 1-second resolution timestamp is higher than last one
long now = Math.max(_context.clock().now(), session.getLastLS2SignTime() + 1000);
ls2.setPublished(now);