From 568c90806d19b8f92199333cc2eada4807ddccb4 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 16 Apr 2015 14:24:56 +0000 Subject: [PATCH] I2CP: Run DistributeLocal jobs inline (ticket #1506) --- history.txt | 5 +++++ router/java/src/net/i2p/router/RouterVersion.java | 2 +- .../src/net/i2p/router/client/ClientConnectionRunner.java | 2 ++ router/java/src/net/i2p/router/client/ClientManager.java | 8 ++++++-- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/history.txt b/history.txt index beb1d3f2d..9602eeeb8 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2015-04-16 zzz + * I2CP: Run DistributeLocal jobs inline (ticket #1506) + * i2psnark: Increase max tunnels to 10 + * Transport: Fix active peer count for NTCP + 2015-04-15 tuna * SimpleScheduler: Deprecated, functionaltiy moved to SimpleTimer2 (ticket #1069) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 282c18b42..0725033fa 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 = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java index a8442d496..226973fe4 100644 --- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java +++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java @@ -476,6 +476,8 @@ class ClientConnectionRunner { /** * Asynchronously deliver the message to the current runner * + * Note that no failure indication is available. + * Fails silently on e.g. queue overflow to client, client dead, etc. */ void receiveMessage(Destination toDest, Destination fromDest, Payload payload) { if (_dead) return; diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java index 9a8850c9b..74d5e91ac 100644 --- a/router/java/src/net/i2p/router/client/ClientManager.java +++ b/router/java/src/net/i2p/router/client/ClientManager.java @@ -299,8 +299,10 @@ class ClientManager { // sender went away return; } - // TODO can we just run this inline instead? - _ctx.jobQueue().addJob(new DistributeLocal(toDest, runner, sender, fromDest, payload, msgId, messageNonce)); + // run this inline so we don't clog up the job queue + Job j = new DistributeLocal(toDest, runner, sender, fromDest, payload, msgId, messageNonce); + //_ctx.jobQueue().addJob(j); + j.runJob(); } else { // remote. w00t if (_log.shouldLog(Log.DEBUG)) @@ -346,6 +348,8 @@ class ClientManager { public void runJob() { _to.receiveMessage(_toDest, _fromDest, _payload); + // note that receiveMessage() does not indicate a failure, + // so a queue overflow is not recognized. we always return success. if (_from != null) { _from.updateMessageDeliveryStatus(_msgId, _messageNonce, MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL); }