diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index 8ec769dd8..2485f170e 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -14,8 +14,8 @@ package net.i2p; * */ public class CoreVersion { - public final static String ID = "$Revision: 1.60 $ $Date: 2006/04/23 16:06:13 $"; - public final static String VERSION = "0.6.1.18"; + public final static String ID = "$Revision: 1.61 $ $Date: 2006/05/09 16:17:19 $"; + public final static String VERSION = "0.6.1.19"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/history.txt b/history.txt index 950f754bf..f0f1fdc47 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,9 @@ -$Id: history.txt,v 1.477 2006-05-17 22:01:21 jrandom Exp $ +$Id: history.txt,v 1.478 2006-05-17 22:42:57 complication Exp $ + +* 2006-05-18 0.6.1.19 released + +2006-05-18 jrandom + * Made the SSU ACKs less frequent when possible 2006-05-17 Complication * Fix some oversights in my previous changes: diff --git a/initialNews.xml b/initialNews.xml index e22b52458..55ec57130 100644 --- a/initialNews.xml +++ b/initialNews.xml @@ -1,5 +1,5 @@ - - + i2p - 0.6.1.18 + 0.6.1.19 diff --git a/news.xml b/news.xml index 5d5842fdf..55b45e4c0 100644 --- a/news.xml +++ b/news.xml @@ -1,5 +1,5 @@ - - + released with changes to help reduce periodism, congestion and lease failure. -
+
• 2006-05-09: status notes and meeting log -
+
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index fce369b14..9d6fa3ecc 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.417 $ $Date: 2006-05-17 22:00:49 $"; - public final static String VERSION = "0.6.1.18"; - public final static long BUILD = 6; + public final static String ID = "$Revision: 1.418 $ $Date: 2006-05-17 22:42:57 $"; + public final static String VERSION = "0.6.1.19"; + public final static long BUILD = 0; 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/transport/udp/ACKSender.java b/router/java/src/net/i2p/router/transport/udp/ACKSender.java index a6a494205..d0bdc33d3 100644 --- a/router/java/src/net/i2p/router/transport/udp/ACKSender.java +++ b/router/java/src/net/i2p/router/transport/udp/ACKSender.java @@ -22,7 +22,7 @@ public class ACKSender implements Runnable { private boolean _alive; /** how frequently do we want to send ACKs to a peer? */ - static final int ACK_FREQUENCY = 100; + static final int ACK_FREQUENCY = 200; public ACKSender(RouterContext ctx, UDPTransport transport) { _context = ctx; @@ -60,6 +60,16 @@ public class ACKSender implements Runnable { } } + private long ackFrequency(long timeSinceACK, long rtt) { + // if we are actively pumping lots of data to them, we can depend upon + // the unsentACKThreshold to figure out when to send an ACK instead of + // using the timer, so we can set the timeout/frequency higher + if (timeSinceACK < 2*1000) + return Math.max(rtt/2, 500); + else + return ACK_FREQUENCY; + } + public void run() { while (_alive) { PeerState peer = null; @@ -70,7 +80,7 @@ public class ACKSender implements Runnable { for (int i = 0; i < _peersToACK.size(); i++) { PeerState cur = (PeerState)_peersToACK.get(i); long wanted = cur.getWantedACKSendSince(); - long delta = wanted + ACK_FREQUENCY - now; + long delta = wanted + ackFrequency(now-cur.getLastACKSend(), cur.getRTT()) - now; if ( ( (wanted > 0) && (delta < 0) ) || (cur.unsentACKThresholdReached()) ) { _peersToACK.remove(i); peer = cur; diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index c91119972..7a757c918 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -153,7 +153,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority _needsRebuild = true; _context.statManager().createRateStat("udp.alreadyConnected", "What is the lifetime of a reestablished session", "udp", new long[] { 60*1000, 10*60*1000, 60*60*1000, 24*60*60*1000 }); - _context.statManager().createRateStat("udp.droppedPeer", "How long ago did we receive from a dropped peer (duration == session lifetime", "udp", new long[] { 60*60*1000, 24*60*60*1000 }); + _context.statManager().createRateStat("udp.droppedPeer", "How long ago did we receive from a dropped peer (duration == session lifetime", "udp", new long[] { 60*1000, 60*60*1000, 24*60*60*1000 }); _context.statManager().createRateStat("udp.droppedPeerInactive", "How long ago did we receive from a dropped peer (duration == session lifetime)", "udp", new long[] { 60*1000, 60*60*1000, 24*60*60*1000 }); _context.statManager().createRateStat("udp.statusOK", "How many times the peer test returned OK", "udp", new long[] { 5*60*1000, 20*60*1000, 60*60*1000, 24*60*60*1000 }); _context.statManager().createRateStat("udp.statusDifferent", "How many times the peer test returned different IP/ports", "udp", new long[] { 5*60*1000, 20*60*1000, 60*60*1000, 24*60*60*1000 });