propagate from branch 'i2p.i2p.zzz.test3' (head d65e8465671ba0b8f6f013b56045bf867e10a78e)

to branch 'i2p.i2p' (head e2ee75916f2ff6bd698585808a81071b44c978b1)
This commit is contained in:
zzz
2009-08-19 23:44:19 +00:00
109 changed files with 1699 additions and 1815 deletions

View File

@ -778,7 +778,7 @@ public class Blocklist {
if (to != from) {
out.write(toStr(to)); out.write("</td></tr>\n");
} else
out.write("&nbsp</td></tr>\n");
out.write("&nbsp;</td></tr>\n");
}
if (_blocklistSize > MAX_DISPLAY)
out.write("<tr><th colspan=2>First " + MAX_DISPLAY + " displayed, see the " +

View File

@ -615,7 +615,7 @@ public class JobQueue {
// for (int i = 0; i < states.length; i++)
// buf.append(states[i]).append(" ");
//buf.append(']');
buf.append("</b><br />\n");
buf.append("</b><br>\n");
long now = _context.clock().now();

View File

@ -597,23 +597,23 @@ public class Router {
"<option value=\"/oldconsole.jsp#netdb\">Network Database</option>\n" +
"<option value=\"/oldconsole.jsp#logs\">Log messages</option>\n" +
"</select> <input type=\"submit\" value=\"GO\" /> </form>" +
"<hr />\n");
"<hr>\n");
StringBuilder buf = new StringBuilder(32*1024);
if ( (_routerInfo != null) && (_routerInfo.getIdentity() != null) )
buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br />\n");
buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br />\n");
buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br />\n");
buf.append("<b>Clock offset: </b> ").append(_context.clock().getOffset()).append("ms (OS time: ").append(new Date(_context.clock().now() - _context.clock().getOffset())).append(")<br />\n");
buf.append("<b>Router: </b> ").append(_routerInfo.getIdentity().getHash().toBase64()).append("<br>\n");
buf.append("<b>As of: </b> ").append(new Date(_context.clock().now())).append(" (uptime: ").append(DataHelper.formatDuration(getUptime())).append(") <br>\n");
buf.append("<b>Started on: </b> ").append(new Date(getWhenStarted())).append("<br>\n");
buf.append("<b>Clock offset: </b> ").append(_context.clock().getOffset()).append("ms (OS time: ").append(new Date(_context.clock().now() - _context.clock().getOffset())).append(")<br>\n");
long tot = Runtime.getRuntime().totalMemory()/1024;
long free = Runtime.getRuntime().freeMemory()/1024;
buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br />\n");
buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br />\n");
buf.append("<b>Memory:</b> In use: ").append((tot-free)).append("KB Free: ").append(free).append("KB <br>\n");
buf.append("<b>Version:</b> Router: ").append(RouterVersion.VERSION).append(" / SDK: ").append(CoreVersion.VERSION).append("<br>\n");
if (_higherVersionSeen)
buf.append("<b><font color=\"red\">HIGHER VERSION SEEN</font><b> - please <a href=\"http://www.i2p.net/\">check</a> to see if there is a new release out<br />\n");
buf.append("<b><font color=\"red\">HIGHER VERSION SEEN</font><b> - please <a href=\"http://www.i2p.net/\">check</a> to see if there is a new release out<br>\n");
buf.append("<hr /><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
buf.append("<hr><a name=\"bandwidth\"> </a><h2>Bandwidth</h2>\n");
long sent = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes();
long received = _context.bandwidthLimiter().getTotalAllocatedInboundBytes();
buf.append("<ul>");
@ -723,41 +723,41 @@ public class Router {
_context.bandwidthLimiter().renderStatusHTML(out);
out.write("<hr /><a name=\"clients\"> </a>\n");
out.write("<hr><a name=\"clients\"> </a>\n");
_context.clientManager().renderStatusHTML(out);
out.write("\n<hr /><a name=\"transports\"> </a>\n");
out.write("\n<hr><a name=\"transports\"> </a>\n");
_context.commSystem().renderStatusHTML(out);
out.write("\n<hr /><a name=\"profiles\"> </a>\n");
out.write("\n<hr><a name=\"profiles\"> </a>\n");
_context.peerManager().renderStatusHTML(out);
out.write("\n<hr /><a name=\"tunnels\"> </a>\n");
out.write("\n<hr><a name=\"tunnels\"> </a>\n");
_context.tunnelManager().renderStatusHTML(out);
out.write("\n<hr /><a name=\"jobs\"> </a>\n");
out.write("\n<hr><a name=\"jobs\"> </a>\n");
_context.jobQueue().renderStatusHTML(out);
out.write("\n<hr /><a name=\"shitlist\"> </a>\n");
out.write("\n<hr><a name=\"shitlist\"> </a>\n");
_context.shitlist().renderStatusHTML(out);
out.write("\n<hr /><a name=\"pending\"> </a>\n");
out.write("\n<hr><a name=\"pending\"> </a>\n");
_context.messageRegistry().renderStatusHTML(out);
out.write("\n<hr /><a name=\"netdb\"> </a>\n");
out.write("\n<hr><a name=\"netdb\"> </a>\n");
_context.netDb().renderLeaseSetHTML(out);
_context.netDb().renderStatusHTML(out);
buf.setLength(0);
buf.append("\n<hr /><a name=\"logs\"> </a>\n");
buf.append("\n<hr><a name=\"logs\"> </a>\n");
List msgs = _context.logManager().getBuffer().getMostRecentMessages();
buf.append("\n<h2>Most recent console messages:</h2><table>\n");
for (Iterator iter = msgs.iterator(); iter.hasNext(); ) {

View File

@ -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 = 12;
public final static long BUILD = 15;
/** for example "-test" */
public final static String EXTRA = "";
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;

View File

@ -274,7 +274,7 @@ public class Shitlist {
if ( (transports != null) && (transports.size() > 0) )
buf.append(" on the following transport: ").append(transports);
if (entry.cause != null) {
buf.append("<br />\n");
buf.append("<br>\n");
buf.append(entry.cause);
}
buf.append(" (<a href=\"configpeer.jsp?peer=").append(key.toBase64()).append("#unsh\">unban now</a>)");

View File

@ -388,7 +388,7 @@ public class ClientManager {
public void renderStatusHTML(Writer out) throws IOException {
StringBuilder buf = new StringBuilder(8*1024);
buf.append("<u><b>Local destinations</b></u><br />");
buf.append("<u><b>Local destinations</b></u><br>");
Map runners = null;
synchronized (_runners) {
@ -397,39 +397,39 @@ public class ClientManager {
for (Iterator iter = runners.keySet().iterator(); iter.hasNext(); ) {
Destination dest = (Destination)iter.next();
ClientConnectionRunner runner = (ClientConnectionRunner)runners.get(dest);
buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br />\n");
buf.append("<b>*</b> ").append(dest.calculateHash().toBase64().substring(0,6)).append("<br>\n");
LeaseSet ls = runner.getLeaseSet();
if (ls == null) {
buf.append("<font color=\"red\"><i>No lease</i></font><br />\n");
buf.append("<font color=\"red\"><i>No lease</i></font><br>\n");
} else {
long leaseAge = ls.getEarliestLeaseDate() - _ctx.clock().now();
if (leaseAge <= 0) {
buf.append("<font color=\"red\"><i>Lease expired ");
buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br />\n");
buf.append(DataHelper.formatDuration(0-leaseAge)).append(" ago</i></font><br>\n");
} else {
int count = ls.getLeaseCount();
if (count <= 0) {
buf.append("<font color=\"red\"><i>No tunnels</i></font><br />\n");
buf.append("<font color=\"red\"><i>No tunnels</i></font><br>\n");
} else {
TunnelId id = ls.getLease(0).getTunnelId();
TunnelInfo info = _ctx.tunnelManager().getTunnelInfo(id);
if (info == null) {
buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br />\n");
buf.append("<font color=\"red\"><i>Failed tunnels</i></font><br>\n");
} else {
buf.append(count).append(" x ");
buf.append(info.getLength() - 1).append(" hop tunnel");
if (count != 1)
buf.append('s');
buf.append("<br />\n");
buf.append("<br>\n");
buf.append("Expiring in ").append(DataHelper.formatDuration(leaseAge));
buf.append("<br />\n");
buf.append("<br>\n");
}
}
}
}
}
buf.append("\n<hr />\n");
buf.append("\n<hr>\n");
out.write(buf.toString());
out.flush();
}

View File

@ -971,18 +971,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
else
buf.append(dest.toBase64().substring(0, 6));
}
buf.append(")</b><br />\n");
buf.append(")</b><br>\n");
long exp = ls.getEarliestLeaseDate()-now;
if (exp > 0)
buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br />\n");
buf.append("Expires in ").append(DataHelper.formatDuration(exp)).append("<br>\n");
else
buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br />\n");
buf.append("Expired ").append(DataHelper.formatDuration(0-exp)).append(" ago<br>\n");
for (int i = 0; i < ls.getLeaseCount(); i++) {
buf.append("Lease ").append(i + 1).append(": Gateway ");
buf.append(_context.commSystem().renderPeerHTML(ls.getLease(i).getGateway()));
buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br />\n");
buf.append(" Tunnel ").append(ls.getLease(i).getTunnelId().getTunnelId()).append("<br>\n");
}
buf.append("<hr />\n");
buf.append("<hr>\n");
out.write(buf.toString());
buf.setLength(0);
}
@ -996,7 +996,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
if (full)
size *= 4;
StringBuilder buf = new StringBuilder(size);
out.write("<h2>Network Database Contents</h2>\n");
out.write("<h2>Network Database Contents (<a href=\"netdb.jsp?l=1\">View LeaseSets</a>)</h2>\n");
if (!_initialized) {
buf.append("<i>Not initialized</i>\n");
out.write(buf.toString());
@ -1004,7 +1004,6 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
return;
}
out.write("<a href=\"netdb.jsp?l=1\">View LeaseSets</a>");
Hash us = _context.routerHash();
out.write("<a name=\"routers\" ></a><h3>Routers (<a href=\"netdb.jsp");
if (full)
@ -1084,18 +1083,18 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
String hash = info.getIdentity().getHash().toBase64();
buf.append("<a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
if (isUs) {
buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br />\n");
buf.append("<a name=\"our-info\" ></a><b>Our info: ").append(hash).append("</b><br>\n");
} else {
buf.append("<b>Peer info for:</b> ").append(hash).append("<br />\n");
buf.append("<b>Peer info for:</b> ").append(hash).append("<br>\n");
}
long age = _context.clock().now() - info.getPublished();
if (isUs && _context.router().isHidden())
buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
buf.append("Hidden, Updated: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
else if (age > 0)
buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br />\n");
buf.append("Published: <i>").append(DataHelper.formatDuration(age)).append(" ago</i><br>\n");
else
buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br />\n");
buf.append("Published: <i>in ").append(DataHelper.formatDuration(0-age)).append("???</i><br>\n");
buf.append("Address(es): <i>");
String country = _context.commSystem().getCountry(info.getIdentity().getHash());
if(country != null) {
@ -1111,19 +1110,19 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
buf.append('[').append(DataHelper.stripHTML(name)).append('=').append(DataHelper.stripHTML(val)).append("] ");
}
}
buf.append("</i><br />\n");
buf.append("</i><br>\n");
if (full) {
buf.append("Stats: <br /><i><code>\n");
buf.append("Stats: <br><i><code>\n");
for (Iterator iter = info.getOptions().keySet().iterator(); iter.hasNext(); ) {
String key = (String)iter.next();
String val = info.getOption(key);
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br />\n");
buf.append(DataHelper.stripHTML(key)).append(" = ").append(DataHelper.stripHTML(val)).append("<br>\n");
}
buf.append("</code></i>\n");
} else {
buf.append("<a href=\"netdb.jsp?r=").append(hash.substring(0, 6)).append("\" >Full entry</a>\n");
}
buf.append("<hr />\n");
buf.append("<hr>\n");
}
}

View File

@ -95,7 +95,7 @@ class ProfileOrganizerRenderer {
}
if (tier != prevTier)
buf.append("<tr><td colspan=\"7\"><hr /></td></tr>\n");
buf.append("<tr><td colspan=\"7\"><hr></td></tr>\n");
prevTier = tier;
buf.append("<tr><td align=\"center\" nowrap>");
@ -149,7 +149,7 @@ class ProfileOrganizerRenderer {
if (total / fails <= 10) // hide if < 10%
buf.append(' ').append(fails).append('/').append(total).append(" Test Fails");
}
buf.append("&nbsp</td>");
buf.append("&nbsp;</td>");
buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=").append(peer.toBase64().substring(0,6)).append("\">profile</a>");
buf.append("&nbsp;<a href=\"configpeer.jsp?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
buf.append("</tr>");
@ -219,8 +219,8 @@ class ProfileOrganizerRenderer {
buf.append("</table>");
buf.append("<h3>Thresholds:</h3>");
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br />");
buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br />");
buf.append("<b>Speed:</b> ").append(num(_organizer.getSpeedThreshold())).append(" (").append(fast).append(" fast peers)<br>");
buf.append("<b>Capacity:</b> ").append(num(_organizer.getCapacityThreshold())).append(" (").append(reliable).append(" high capacity peers)<br>");
buf.append("<b>Integration:</b> ").append(num(_organizer.getIntegrationThreshold())).append(" (").append(integrated).append(" well integrated peers)");
buf.append("<h3>Definitions:</h3><ul>" +
"<li><b>groups</b>: as determined by the profile organizer</li>" +

View File

@ -483,7 +483,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade {
buf.append(h);
if (found)
buf.append("</a>");
buf.append("</font></tt>");
buf.append("</tt>");
return buf.toString();
}
}

View File

@ -645,7 +645,7 @@ public class FIFOBandwidthLimiter {
buf.append("ms ago</li>\n");
}
}
buf.append("</ol></li></ul></p><hr>\n");
buf.append("</ol></li></ul><hr>\n");
out.write(buf.toString());
out.flush();
}

View File

@ -454,7 +454,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis
/** warning - slow */
public String renderStatusHTML() {
final StringBuilder sb = new StringBuilder();
sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br />");
sb.append("<a name=\"upnp\"></a><b>UPnP Status:</b><br>");
if(isDisabled) {
sb.append("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?");

View File

@ -720,7 +720,7 @@ public class NTCPTransport extends TransportImpl {
}
if (peers.size() > 0) {
// buf.append("<tr> <td colspan=\"11\"><hr /></td></tr>\n");
// buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n");
buf.append("<tr class=\"tablefooter\"> <td align=\"center\"><b>").append(peers.size()).append(" peers</b></td> <td>&nbsp;</td> <td>&nbsp;");
buf.append("</td> <td align=\"center\"><b>").append(formatRate(bpsRecv/1024)).append("/").append(formatRate(bpsSend/1024)).append("K/s</b>");
buf.append("</td> <td align=\"center\"><b>").append(DataHelper.formatDuration(totalUptime/peers.size()));

View File

@ -1768,10 +1768,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
int numPeers = 0;
StringBuilder buf = new StringBuilder(512);
buf.append("<p><b id=\"udpcon\"><h3>UDP connections: ").append(peers.size());
buf.append("<h3 id=\"udpcon\">UDP connections: ").append(peers.size());
buf.append(". Limit: ").append(getMaxConnections());
buf.append(". Timeout: ").append(DataHelper.formatDuration(_expireTimeout));
buf.append(".</b></h3>\n");
buf.append(".</h3>\n");
buf.append("<div class=\"wideload\"><table>\n");
buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">Peer</a>");
if (sortFlags != FLAG_ALPHA)
@ -1843,18 +1843,18 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
boolean appended = false;
if (_activeThrottle.isChoked(peer.getRemotePeer())) {
if (!appended) buf.append("<br />");
if (!appended) buf.append("<br>");
buf.append(" <i>Choked</i>");
appended = true;
}
if (peer.getConsecutiveFailedSends() > 0) {
if (!appended) buf.append("<br />");
if (!appended) buf.append("<br>");
buf.append(" <i>").append(peer.getConsecutiveFailedSends()).append(" fail(s)</i>");
appended = true;
}
if (_context.shitlist().isShitlisted(peer.getRemotePeer(), STYLE)) {
if (!appended) buf.append("<br />");
buf.append(" <i>Shitlist</i>");
if (!appended) buf.append("<br>");
buf.append(" <i>Banned</i>");
appended = true;
}
//byte[] ip = getIP(peer.getRemotePeer());
@ -1985,7 +1985,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
numPeers++;
}
// buf.append("<tr><td colspan=\"16\"><hr /></td></tr>\n");
// buf.append("<tr><td colspan=\"16\"><hr></td></tr>\n");
buf.append(" <tr class=\"tablefooter\"> <td colspan=\"3\" align=\"right\"><b>Total</b></td>");
buf.append(" <td align=\"center\" nowrap><b>");
buf.append(formatKBps(bpsIn)).append("/").append(formatKBps(bpsOut));
@ -2000,7 +2000,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
buf.append("</b></td> <td>&nbsp;</td> <td align=\"center\"><b>");
buf.append(numPeers > 0 ? rtoTotal/numPeers : 0);
buf.append("</b></td>\n <td>&nbsp;</td> <td align=\"center\"><b>");
buf.append(sendTotal).append("</td></b> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n");
buf.append(sendTotal).append("</b></td> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n");
buf.append(" <td align=\"center\"><b>").append(resentTotal);
buf.append("</b></td> <td align=\"center\"><b>").append(dupRecvTotal).append("</b></td>\n");
buf.append(" </tr></table></div></p><p>\n");
@ -2012,7 +2012,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
double nondupSent = ((double)bytesTransmitted - ((double)resentTotal)*averagePacketSize);
double bwResent = (nondupSent <= 0 ? 0d : ((((double)resentTotal)*averagePacketSize) / nondupSent));
buf.append("<h3>Percentage of bytes retransmitted (lifetime): ").append(formatPct(bwResent));
buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br /></p>\n");
buf.append("</h3><i>(Includes retransmission required by packet loss)</i><br></p>\n");
out.write(buf.toString());
buf.setLength(0);
out.write(KEY);
@ -2032,24 +2032,24 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
}
private static final String KEY = "<h3>Definitions:</h3><div class=\"configure\">" +
"<br><b id=\"def.peer\">Peer</b>: the remote peer.<br />\n" +
"<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br />\n" +
"<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br />\n" +
"<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br />\n" +
"<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br />\n" +
"<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br />\n" +
"<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br />\n" +
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of currently active messages being sent, /<br />\n" +
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the maximum number of concurrent messages to send, /<br />\n"+
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of consecutive sends which were blocked due to throws message window size.<br />\n" +
"<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br />\n" +
"<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br />\n" +
"<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br />\n" +
"<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br />\n" +
"<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br />\n" +
"<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br />\n" +
"<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br />\n" +
"<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br />\n" +
"<br><b id=\"def.peer\">Peer</b>: the remote peer.<br>\n" +
"<b id=\"def.dir\">Dir</b>: v means they offer to introduce us, ^ means we offer to introduce them.<br>\n" +
"<b id=\"def.idle\">Idle</b>: the idle time is how long since a packet has been received or sent.<br>\n" +
"<b id=\"def.rate\">In/out</b>: the rates show a smoothed inbound and outbound transfer rate (KBytes per second).<br>\n" +
"<b id=\"def.up\">Up</b>: the uptime is how long ago this session was established.<br>\n" +
"<b id=\"def.skew\">Skew</b>: the skew says how far off the other user's clock is, relative to your own.<br>\n" +
"<b id=\"def.cwnd\">Cwnd</b>: the congestion window is how many bytes in 'in flight' you can send w/out an acknowledgement, / <br>\n" +
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of currently active messages being sent, /<br>\n" +
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the maximum number of concurrent messages to send, /<br>\n"+
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the number of consecutive sends which were blocked due to throws message window size.<br>\n" +
"<b id=\"def.ssthresh\">Sst</b>: the slow start threshold helps make sure the cwnd doesn't grow too fast.<br>\n" +
"<b id=\"def.rtt\">Rtt</b>: the round trip time is how long it takes to get an acknowledgement of a packet.<br>\n" +
"<b id=\"def.dev\">Dev</b>: the standard deviation of the round trip time, to help control the retransmit timeout.<br>\n" +
"<b id=\"def.rto\">Rto</b>: the retransmit timeout controls how frequently an unacknowledged packet will be retransmitted.<br>\n" +
"<b id=\"def.mtu\">Mtu</b>: current sending packet size / estimated receiving packet size.<br>\n" +
"<b id=\"def.send\">TX</b>: the number of packets sent to the peer.<br>\n" +
"<b id=\"def.recv\">RX</b>: the number of packets received from the peer.<br>\n" +
"<b id=\"def.resent\">ReTX</b>: the number of packets retransmitted to the peer.<br>\n" +
"<b id=\"def.dupRecv\">DupRX</b>: the number of duplicate packets received from the peer." +
"</div>\n";

View File

@ -493,8 +493,8 @@ public class TunnelPoolManager implements TunnelManagerFacade {
processed += cfg.getProcessedMessagesCount();
}
out.write("</table>\n");
out.write("<div class=\"statusnotes\"><center><b>Inactive participating tunnels: " + inactive + "</b></div>\n");
out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></center></div>\n");
out.write("<div class=\"statusnotes\"><b>Inactive participating tunnels: " + inactive + "</b></div>\n");
out.write("<div class=\"statusnotes\"><b>Lifetime bandwidth usage: " + DataHelper.formatSize(processed*1024) + "B</b></div>\n");
renderPeers(out);
}
@ -542,9 +542,9 @@ public class TunnelPoolManager implements TunnelManagerFacade {
continue; // don't display tunnels in their grace period
live++;
if (info.isInbound())
out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound\"/></td>");
out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound\"></td>");
else
out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"Outbound\"/></td>");
out.write("<tr> <td class=\"cells\" align=\"center\"><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"Outbound\"></td>");
out.write(" <td class=\"cells\" align=\"center\">" + DataHelper.formatDuration(timeLeft) + "</td>\n");
out.write(" <td class=\"cells\" align=\"center\">" + info.getProcessedMessagesCount() + "KB</td>\n");
for (int j = 0; j < info.getLength(); j++) {
@ -558,7 +558,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
}
if (info.getLength() < maxLength && (info.getLength() == 1 || j == info.getLength() - 2)) {
for (int k = info.getLength(); k < maxLength; k++)
out.write(" <td class=\"cells\" align=\"center\">&nbsp</td>");
out.write(" <td class=\"cells\" align=\"center\">&nbsp;</td>");
}
}
out.write("</tr>\n");