From cbc89376d3ec27b4d76e9ede809cb0d958af0cb0 Mon Sep 17 00:00:00 2001 From: jrandom <jrandom> Date: Thu, 16 Dec 2004 05:42:03 +0000 Subject: [PATCH] 2004-12-16 jrandom * Remove the randomized factor in the tunnel rejection by bandwidth - we now accept the request if we've allocated less than our limit and reject it if we've allocated more. * Stick to the standard capacity scale on tunnel rejection, even for the 10m period. * Build the time message at the very last possible moment --- history.txt | 10 +++++++++- .../src/net/i2p/router/RouterThrottleImpl.java | 2 +- router/java/src/net/i2p/router/RouterVersion.java | 4 ++-- .../i2p/router/peermanager/CapacityCalculator.java | 8 ++++---- .../i2p/router/transport/tcp/ConnectionRunner.java | 14 +++++++------- .../i2p/router/transport/tcp/MessageHandler.java | 10 ++++++---- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/history.txt b/history.txt index 3750d09a7c..627fd73983 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,12 @@ -$Id: history.txt,v 1.107 2004/12/14 11:42:35 jrandom Exp $ +$Id: history.txt,v 1.108 2004/12/15 21:45:56 jrandom Exp $ + +2004-12-16 jrandom + * Remove the randomized factor in the tunnel rejection by bandwidth - + we now accept the request if we've allocated less than our limit + and reject it if we've allocated more. + * Stick to the standard capacity scale on tunnel rejection, even for + the 10m period. + * Build the time message at the very last possible moment 2004-12-15 jrandom * Handle hard disconnects more gracefully within the streaming lib, and diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java index b6ad5f11b6..e52adbbb56 100644 --- a/router/java/src/net/i2p/router/RouterThrottleImpl.java +++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java @@ -241,7 +241,7 @@ class RouterThrottleImpl implements RouterThrottle { double allocatedKBps = toAllocate / (10 * 60 * 1024); - if (_context.random().nextInt(100) > 100 * pctFull) { + if (pctFull < 1.0) { // (_context.random().nextInt(100) > 100 * pctFull) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Probabalistically allowing the tunnel w/ " + pctFull + " of our " + bytesAllowed + "bytes/" + allocatedKBps + "KBps allocated through " + numTunnels + " tunnels"); diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 914b1a82ac..3fc2dce40b 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.112 $ $Date: 2004/12/14 11:42:35 $"; + public final static String ID = "$Revision: 1.113 $ $Date: 2004/12/15 21:45:55 $"; public final static String VERSION = "0.4.2.3"; - public final static long BUILD = 6; + public final static long BUILD = 7; public static void main(String args[]) { System.out.println("I2P Router version: " + VERSION); System.out.println("Router ID: " + RouterVersion.ID); diff --git a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java index 35e36043b9..0a8670471a 100644 --- a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java +++ b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java @@ -101,10 +101,10 @@ public class CapacityCalculator extends Calculator { val -= failed * stretch; } - if ( (period <= 10*60*1000) && (curRejected.getCurrentEventCount() + curRejected.getLastEventCount() > 0) ) { - //System.out.println("10m period has rejected " + (curRejected.getCurrentEventCount() + curRejected.getLastEventCount()) + " times"); - return 0.0d; - } else + //if ( (period <= 10*60*1000) && (curRejected.getCurrentEventCount() + curRejected.getLastEventCount() > 0) ) { + // //System.out.println("10m period has rejected " + (curRejected.getCurrentEventCount() + curRejected.getLastEventCount()) + " times"); + // return 0.0d; + //} else val -= stretch * (curRejected.getCurrentEventCount() + curRejected.getLastEventCount()); val += GROWTH_FACTOR; diff --git a/router/java/src/net/i2p/router/transport/tcp/ConnectionRunner.java b/router/java/src/net/i2p/router/transport/tcp/ConnectionRunner.java index 62a1f2e780..c3a7367785 100644 --- a/router/java/src/net/i2p/router/transport/tcp/ConnectionRunner.java +++ b/router/java/src/net/i2p/router/transport/tcp/ConnectionRunner.java @@ -92,11 +92,9 @@ class ConnectionRunner implements Runnable { msg.timestamp("ConnectionRunner.sendMessage data"); - I2NPMessage timeMessage = null; - if (_lastTimeSend < _context.clock().now() - TIME_SEND_FREQUENCY) { - timeMessage = buildTimeMessage(); - _lastTimeSend = _context.clock().now(); - } + boolean sendTime = false; + if (_lastTimeSend < _context.clock().now() - TIME_SEND_FREQUENCY) + sendTime = true; OutputStream out = _con.getOutputStream(); boolean ok = false; @@ -106,8 +104,10 @@ class ConnectionRunner implements Runnable { synchronized (out) { before = _context.clock().now(); out.write(buf, 0, written); - if (timeMessage != null) - out.write(timeMessage.toByteArray()); + if (sendTime) { + out.write(buildTimeMessage().toByteArray()); + _lastTimeSend = _context.clock().now(); + } out.flush(); after = _context.clock().now(); } diff --git a/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java b/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java index cbe1ee7a56..6232debf3b 100644 --- a/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java +++ b/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java @@ -54,10 +54,12 @@ public class MessageHandler implements I2NPMessageReader.I2NPMessageEventListene long delta = _con.getRouterContext().clock().now() - remoteTime; if ( (delta > Router.CLOCK_FUDGE_FACTOR) || (delta < 0 - Router.CLOCK_FUDGE_FACTOR) ) { _con.closeConnection(); - _transport.addConnectionErrorMessage("Peer " + _identHash.toBase64().substring(0,6) - + " is too far skewed (" - + DataHelper.formatDuration(delta) + ") after uptime of " - + DataHelper.formatDuration(_con.getLifetime())); + String msg = "Peer " + _identHash.toBase64().substring(0,6) + " is too far skewed (" + + DataHelper.formatDuration(delta) + ") after uptime of " + + DataHelper.formatDuration(_con.getLifetime()); + if (_log.shouldLog(Log.WARN)) + _log.warn(msg); + _transport.addConnectionErrorMessage(msg); _transport.getContext().statManager().addRateData("tcp.disconnectAfterSkew", delta, _con.getLifetime()); } else { int level = Log.DEBUG; -- GitLab