From bc42c26d94dae3af6b38db69ab7bcf3ea3df06cf Mon Sep 17 00:00:00 2001
From: jrandom <jrandom>
Date: Tue, 1 Aug 2006 02:26:52 +0000
Subject: [PATCH] 2006-07-31  jrandom     * Increase the tunnel building
 timeout     * Avoid a rare race (thanks bar!)     * Fix the bandwidth
 capacity publishing code to factor in share percentage       and outbound
 throttling (oops)

---
 router/java/src/net/i2p/router/Router.java                    | 3 ++-
 router/java/src/net/i2p/router/RouterVersion.java             | 4 ++--
 .../net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java | 2 +-
 router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java  | 4 ++--
 .../java/src/net/i2p/router/tunnel/pool/BuildRequestor.java   | 2 +-
 5 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 22d651969e..e8c5473a36 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -372,7 +372,8 @@ public class Router {
     
     public void addCapabilities(RouterInfo ri) {
         int bwLim = Math.min(_context.bandwidthLimiter().getInboundKBytesPerSecond(),
-                             _context.bandwidthLimiter().getInboundKBytesPerSecond());
+                             _context.bandwidthLimiter().getOutboundKBytesPerSecond());
+        bwLim = (int)(((float)bwLim) * getSharePercentage());
         if (_log.shouldLog(Log.WARN))
             _log.warn("Adding capabilities w/ bw limit @ " + bwLim, new Exception("caps"));
         
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index e5b39f5d94..0ca220fe36 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -15,9 +15,9 @@ import net.i2p.CoreVersion;
  *
  */
 public class RouterVersion {
-    public final static String ID = "$Revision: 1.442 $ $Date: 2006-07-29 13:03:17 $";
+    public final static String ID = "$Revision: 1.443 $ $Date: 2006-07-30 00:08:23 $";
     public final static String VERSION = "0.6.1.24";
-    public final static long BUILD = 1;
+    public final static long BUILD = 2;
     public static void main(String args[]) {
         System.out.println("I2P Router version: " + VERSION + "-" + BUILD);
         System.out.println("Router ID: " + RouterVersion.ID);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
index 8a515aa0e6..2a91300c17 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlySearchJob.java
@@ -44,7 +44,7 @@ class FloodOnlySearchJob extends FloodSearchJob {
         _isLease = isLease;
         _lookupsRemaining = 0;
         _dead = false;
-        _out = new ArrayList(2);
+        _out = Collections.synchronizedList(new ArrayList(2));
         _replySelector = new FloodOnlyLookupSelector(getContext(), this);
         _onReply = new FloodOnlyLookupMatchJob(getContext(), this);
         _onTimeout = new FloodOnlyLookupTimeoutJob(getContext(), this);
diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
index c87ca492f8..ee98bc4541 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
@@ -88,7 +88,7 @@ class BuildHandler {
                         handled.add(_inboundBuildMessages.remove(_inboundBuildMessages.size()-1));
                 } else {
                     // drop any expired messages
-                    long dropBefore = System.currentTimeMillis() - (BuildRequestor.REQUEST_TIMEOUT/2);
+                    long dropBefore = System.currentTimeMillis() - (BuildRequestor.REQUEST_TIMEOUT/4);
                     do {
                         BuildMessageState state = (BuildMessageState)_inboundBuildMessages.get(0);
                         if (state.recvTime <= dropBefore) {
@@ -640,7 +640,7 @@ class BuildHandler {
                         for (int i = 0; i < _inboundBuildMessages.size(); i++) {
                             BuildMessageState cur = (BuildMessageState)_inboundBuildMessages.get(i);
                             long age = System.currentTimeMillis() - cur.recvTime;
-                            if (age >= BuildRequestor.REQUEST_TIMEOUT/2) {
+                            if (age >= BuildRequestor.REQUEST_TIMEOUT/4) {
                                 _inboundBuildMessages.remove(i);
                                 i--;
                                 dropped++;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java
index d1eb1e0772..251ce3ce6b 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java
@@ -22,7 +22,7 @@ class BuildRequestor {
             ORDER.add(new Integer(i));
     }
     private static final int PRIORITY = 500;
-    static final int REQUEST_TIMEOUT = 10*1000;
+    static final int REQUEST_TIMEOUT = 20*1000;
     
     private static boolean usePairedTunnels(RouterContext ctx) {
         String val = ctx.getProperty("router.usePairedTunnels");
-- 
GitLab