- 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:
zzz
2014-01-10 02:24:15 +00:00
parent 5219791673
commit 576984badc
10 changed files with 89 additions and 41 deletions

View File

@@ -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()));
}
/**

View File

@@ -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 {