diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java index 1e69e0e182..d9fea97433 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java @@ -511,7 +511,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna if (sm == null) return; Properties props = tunnel.getClientOptions(); - sm.setDefaultOptions(sockMgr.buildOptions(props)); + sm.setDefaultOptions(sm.buildOptions(props)); } /** diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 60f67236a3..9dc50b12b4 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -584,7 +584,7 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa } else { if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Message received of type " + message.getType() - + " to be handled by " + handler); + + " to be handled by " + handler.getClass().getSimpleName()); handler.handleMessage(message, this); } } diff --git a/history.txt b/history.txt index 760700ad44..ccc1e43c96 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,7 @@ +2012-06-24 zzz + * I2PTunnel: Fix NPE on shared client creation, thx kytv + * Transport: Add Ethiopia to hidden mode list + 2012-06-21 zzz * I2CP: Make separate message ID counters per-destination, use atomic, increase max (could have caused "local loopback" problems) @@ -5,6 +9,7 @@ streaming messages don't get split up unnecessarily * OCMOSJ, ElG, Streaming: log tweaks * TunnelInfo: Change msg counter from long to int + * TunnelPeerSelectors: Minor refactoring to store context * TunnelPool: Fix bug where a tunnel was marked as reused when it wasn't * TunnelPoolManager: Use one ClientPeerSelector for all pools diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 8ab24107c9..80cfb9c849 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 17; + public final static long BUILD = 18; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java index 5ded790ab8..8880a77854 100644 --- a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java +++ b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java @@ -21,6 +21,13 @@ import net.i2p.router.ReplyJob; import net.i2p.router.RouterContext; import net.i2p.util.Log; +/** + * Send a message directly to another router, i.e. not through a tunnel. + * This is safe to run inline via runJob(). + * If the RouterInfo for the Hash is not found locally, it will + * queue a lookup and register itself to be run again when the lookup + * succeeds or times out. + */ public class SendMessageDirectJob extends JobImpl { private final Log _log; private final I2NPMessage _message; @@ -39,9 +46,11 @@ public class SendMessageDirectJob extends JobImpl { public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, int timeoutMs, int priority) { this(ctx, message, toPeer, null, null, null, null, timeoutMs, priority); } + public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority) { this(ctx, message, toPeer, null, onSuccess, onFail, selector, timeoutMs, priority); } + public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, Job onSend, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority) { super(ctx); _log = getContext().logManager().getLog(SendMessageDirectJob.class); @@ -66,6 +75,7 @@ public class SendMessageDirectJob extends JobImpl { } public String getName() { return "Send Message Direct"; } + public void runJob() { long now = getContext().clock().now(); diff --git a/router/java/src/net/i2p/router/transport/BadCountries.java b/router/java/src/net/i2p/router/transport/BadCountries.java index 1431dcb60f..f5d36b64ac 100644 --- a/router/java/src/net/i2p/router/transport/BadCountries.java +++ b/router/java/src/net/i2p/router/transport/BadCountries.java @@ -16,7 +16,7 @@ abstract class BadCountries { // zzz.i2p/topics/969 // List created based on the Press Freedom Index. Those countries with a score of higher than 50 are included: // http://en.wikipedia.org/wiki/Press_Freedom_Index - // Except: + // Except (quote): // I don't really think that is usage of I2P is dangerous in countries from CIS // General situation is really bad (like in Russia) but people here doesn't have problems with Ecnryption usage. @@ -32,6 +32,7 @@ abstract class BadCountries { /* Democratic Republic of the Congo */ "CD", /* Equatorial Guinea */ "GQ", /* Eritrea */ "ER", + /* Ethiopia */ "ET", /* Fiji */ "FJ", /* Honduras */ "HN", /* Iran */ "IR",