diff --git a/history.txt b/history.txt index ecf39d46f..7dccec239 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,6 @@ -$Id: history.txt,v 1.109 2004/12/16 00:42:04 jrandom Exp $ +$Id: history.txt,v 1.110 2004/12/16 05:21:24 jrandom Exp $ + +* 2004-12-18 0.4.2.4 released 2004-12-16 jrandom * Catch another oddball case for a reset connection in the streaming lib. diff --git a/installer/install.xml b/installer/install.xml index 76dc8f405..dd37df86e 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.4.2.3 + 0.4.2.4 diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index d917da52f..6cc07af47 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.114 $ $Date: 2004/12/16 00:42:04 $"; - public final static String VERSION = "0.4.2.3"; - public final static long BUILD = 8; + public final static String ID = "$Revision: 1.115 $ $Date: 2004/12/16 05:21:23 $"; + public final static String VERSION = "0.4.2.4"; + public final static long BUILD = 0; 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/transport/tcp/MessageHandler.java b/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java index 6232debf3..67fe5b698 100644 --- a/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java +++ b/router/java/src/net/i2p/router/transport/tcp/MessageHandler.java @@ -69,6 +69,7 @@ public class MessageHandler implements I2NPMessageReader.I2NPMessageEventListene _log.log(level, "Peer " + _identHash.toBase64().substring(0,6) + " is only skewed by (" + DataHelper.formatDuration(delta) + ") after uptime of " + DataHelper.formatDuration(_con.getLifetime()) ); + _con.setOffsetReceived(delta); } } diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java index 089f70cc5..e1197cae0 100644 --- a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java +++ b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java @@ -43,6 +43,7 @@ public class TCPConnection { private boolean _closed; private long _lastRead; private long _lastWrite; + private long _offsetReceived; public TCPConnection(RouterContext ctx) { _context = ctx; @@ -59,6 +60,7 @@ public class TCPConnection { _closed = false; _lastRead = 0; _lastWrite = 0; + _offsetReceived = 0; _runner = new ConnectionRunner(_context, this); _context.statManager().createRateStat("tcp.probabalisticDropQueueSize", "How many bytes were queued to be sent when a message as dropped probabalistically?", "TCP", new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000l } ); _context.statManager().createRateStat("tcp.queueSize", "How many bytes were queued on a connection?", "TCP", new long[] { 60*1000l, 10*60*1000l, 60*60*1000l, 24*60*60*1000l } ); @@ -81,6 +83,9 @@ public class TCPConnection { public void setShownAddress(String ip) { _shownAddress = ip; } /** What address the peer said we are reachable on */ public String getShownAddress() { return _shownAddress; } + /** skew that the other peer has from our clock */ + public long getOffsetReceived() { return _offsetReceived; } + public void setOffsetReceived(long ms) { _offsetReceived = ms; } /** * Actually start processing the messages on the connection (and reading diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java index 63dfd1c47..715b381ea 100644 --- a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java +++ b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java @@ -770,6 +770,7 @@ public class TCPTransport extends TransportImpl { public String renderStatusHTML() { StringBuffer buf = new StringBuffer(1024); synchronized (_connectionLock) { + long offsetTotal = 0; buf.append("Connections (").append(_connectionsByIdent.size()).append("):\n"); + buf.append("Average clock skew: "); + if (_connectionsByIdent.size() > 0) + buf.append(offsetTotal / _connectionsByIdent.size()).append("ms
\n"); + else + buf.append("n/a
\n"); + buf.append("Connections being built: