forked from I2P_Developers/i2p.i2p
I2CP:
- Add SessionID to HostLookup/Reply messages, for future use when we have multiple sessions - New SessionID constructor w/ value - Throw IAE on invalid SessionID values - Bump all comments from 0.9.10 to 0.9.11
This commit is contained in:
@@ -232,7 +232,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
|
||||
*
|
||||
* @param props contains i2cp.username and i2cp.password, may be null
|
||||
* @return success
|
||||
* @since 0.9.10
|
||||
* @since 0.9.11
|
||||
*/
|
||||
private boolean checkAuth(Properties props) {
|
||||
if (_authorized)
|
||||
@@ -368,11 +368,12 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
|
||||
|
||||
/**
|
||||
* override for testing
|
||||
* @since 0.9.10
|
||||
* @since 0.9.11
|
||||
*/
|
||||
protected void handleHostLookup(HostLookupMessage message) {
|
||||
_context.jobQueue().addJob(new LookupDestJob(_context, _runner, message.getReqID(),
|
||||
message.getTimeout(), message.getHash(), message.getHostname()));
|
||||
message.getTimeout(), message.getSessionId(),
|
||||
message.getHash(), message.getHostname()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -14,12 +14,13 @@ import net.i2p.data.i2cp.DestReplyMessage;
|
||||
import net.i2p.data.i2cp.HostReplyMessage;
|
||||
import net.i2p.data.i2cp.I2CPMessage;
|
||||
import net.i2p.data.i2cp.I2CPMessageException;
|
||||
import net.i2p.data.i2cp.SessionId;
|
||||
import net.i2p.router.JobImpl;
|
||||
import net.i2p.router.RouterContext;
|
||||
|
||||
/**
|
||||
* Look up the lease of a hash, to convert it to a Destination for the client.
|
||||
* Or, since 0.9.10, lookup a host name in the naming service.
|
||||
* Or, since 0.9.11, lookup a host name in the naming service.
|
||||
*/
|
||||
class LookupDestJob extends JobImpl {
|
||||
private final ClientConnectionRunner _runner;
|
||||
@@ -27,28 +28,32 @@ class LookupDestJob extends JobImpl {
|
||||
private final long _timeout;
|
||||
private final Hash _hash;
|
||||
private final String _name;
|
||||
private final SessionId _sessID;
|
||||
|
||||
private static final long DEFAULT_TIMEOUT = 15*1000;
|
||||
|
||||
public LookupDestJob(RouterContext context, ClientConnectionRunner runner, Hash h) {
|
||||
this(context, runner, -1, DEFAULT_TIMEOUT, h, null);
|
||||
this(context, runner, -1, DEFAULT_TIMEOUT, null, h, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* One of h or name non-null
|
||||
* @param reqID must be >= 0 if name != null
|
||||
* @since 0.9.10
|
||||
* @param sessID must non-null if reqID >= 0
|
||||
* @since 0.9.11
|
||||
*/
|
||||
public LookupDestJob(RouterContext context, ClientConnectionRunner runner,
|
||||
long reqID, long timeout, Hash h, String name) {
|
||||
long reqID, long timeout, SessionId sessID, Hash h, String name) {
|
||||
super(context);
|
||||
if ((h == null && name == null) ||
|
||||
(h != null && name != null) ||
|
||||
(reqID >= 0 && sessID == null) ||
|
||||
(reqID < 0 && name != null))
|
||||
throw new IllegalArgumentException();
|
||||
_runner = runner;
|
||||
_reqID = reqID;
|
||||
_timeout = timeout;
|
||||
_sessID = sessID;
|
||||
if (name != null && name.length() == 60) {
|
||||
// convert a b32 lookup to a hash lookup
|
||||
String nlc = name.toLowerCase(Locale.US);
|
||||
@@ -100,7 +105,7 @@ class LookupDestJob extends JobImpl {
|
||||
private void returnDest(Destination d) {
|
||||
I2CPMessage msg;
|
||||
if (_reqID >= 0)
|
||||
msg = new HostReplyMessage(d, _reqID);
|
||||
msg = new HostReplyMessage(_sessID, d, _reqID);
|
||||
else
|
||||
msg = new DestReplyMessage(d);
|
||||
try {
|
||||
@@ -115,7 +120,7 @@ class LookupDestJob extends JobImpl {
|
||||
private void returnFail() {
|
||||
I2CPMessage msg;
|
||||
if (_reqID >= 0)
|
||||
msg = new HostReplyMessage(HostReplyMessage.RESULT_FAILURE, _reqID);
|
||||
msg = new HostReplyMessage(_sessID, HostReplyMessage.RESULT_FAILURE, _reqID);
|
||||
else
|
||||
msg = new DestReplyMessage(_hash);
|
||||
try {
|
||||
|
Reference in New Issue
Block a user