From 405b85c4b438de30a71749cfe42f645f90611117 Mon Sep 17 00:00:00 2001
From: zzz
-");
@@ -615,7 +615,7 @@ public class I2PSnarkServlet extends HttpServlet {
if (remaining > 0) {
if (peer.isInteresting() && !peer.isChoked()) {
out.write("");
- out.write("" + formatSize(peer.getDownloadRate()) + "ps");
+ out.write(formatSize(peer.getDownloadRate()) + "ps");
} else {
out.write("");
- out.write("" + formatSize(peer.getUploadRate()) + "ps");
+ out.write(formatSize(peer.getUploadRate()) + "ps");
} else {
out.write("Refresh the page to actuate phase change.");
+ addFormNotice("Theme change saved. Refresh the page to view.");
else
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs.");
}
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
index 938fb33d7..369d24770 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
@@ -382,13 +382,13 @@ public class SummaryHelper extends HelperBase {
// red or yellow light
buf.append(" \n");
- } else {
+ } else {
// green light
buf.append(" \n");
}
} else {
// yellow light
- buf.append(" \n");
+ buf.append(" \n");
}
}
buf.append("
\n");
diff --git a/core/c/jbigi/build.sh b/core/c/jbigi/build.sh
index af6dbaa90..13678a6d5 100755
--- a/core/c/jbigi/build.sh
+++ b/core/c/jbigi/build.sh
@@ -54,7 +54,7 @@ cp *jbigi???* ../../lib/
echo 'Library copied to lib/'
cd ../..
-I2P=~/i2p/i2p
+I2P=~/i2p
if [ ! -f $I2P/lib/i2p.jar ]
then
echo "I2P installation not found in $I2P - correct \$I2P definition in script to run speed test"
diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java
index 6983c6b6c..764691d6d 100644
--- a/core/java/src/net/i2p/stat/Rate.java
+++ b/core/java/src/net/i2p/stat/Rate.java
@@ -452,8 +452,14 @@ public class Rate {
&& _lifetimeTotalEventTime == r.getLifetimeTotalEventTime();
}
+ /**
+ * It doesn't appear that Rates are ever stored in a Set or Map
+ * (RateStat stores in an array) so let's make this easy.
+ * We can always make something faster if it's actually used.
+ */
@Override
public int hashCode() {
+/*****
int hash = 5;
hash = 67 * hash + (int)(Double.doubleToLongBits(this._currentTotalValue) ^ (Double.doubleToLongBits(this._currentTotalValue) >>> 32));
hash = 67 * hash + (int)(this._currentEventCount ^ (this._currentEventCount >>> 32));
@@ -470,6 +476,8 @@ public class Rate {
hash = 67 * hash + (int)(this._creationDate ^ (this._creationDate >>> 32));
hash = 67 * hash + (int)(this._period ^ (this._period >>> 32));
return hash;
+******/
+ return toString().hashCode();
}
@Override
diff --git a/history.txt b/history.txt
index ceee3bc43..ba49a9f94 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,8 @@
+* 2009-10-12 0.7.7 released
+
+2009-10-11 zzz
+ * Misc. cleanups after review, prep for release
+
2009-10-09 zzz
* ElGamalEngine: Fix rare AIOOBE (thanks hottuna!)
* I2PTunnel: Fix persistent client tunnel keyfile location
diff --git a/initialNews.xml b/initialNews.xml
index 1572c2ad4..40892c28d 100644
--- a/initialNews.xml
+++ b/initialNews.xml
@@ -1,5 +1,5 @@
-Congratulations on getting I2P installed!
+
-I2P version 0.7.6 contains additional fixes for network stability issues -related to tunnel building and connection limits. -While the 0.7.5 release greatly improved the congestion that -appeared UTC evenings and weekends, it was not eliminated; -this release should improve the situation further. +I2P version 0.7.7 contains several anonymity improvements. +The use of session keys for crypto was completely reworked, +and I2PSnark now uses its own tunnels for tracker communication. +Work continues on improving the router console, +including conformance to HTML standards and better support of UTF-8.
-This version also has new console themes by dr|z3d, -which may be selected on the new UI configuration page. -Sorry, the new themes are not available for IE browsers. +Work also continues on increasing speeds, both by reducing the +number of session keys transferred, by improving the +methods of dropping messages during overload, and by reducing +drops by high-bandwidth routers. +There is a new unsigned update option +for those of you that would like automatic udpates to bleeding-edge development versions.
-The default tunnel length variance is changed from 1 to 0. -This mainly affects exploratory tunnels and iMule. -As explained on zzz.i2p, -a non-zero variance adds very little protection, at great cost -in resources. -Should you wish to reconfigure your exploratory settings back to the old variance of 1, -or change to length 3 variance 0, -you may do so on the config tunnels page. -iMule settings are best changed within that application. -
-I2P now stores temporary data in the system temp directory -(generally /var/tmp on Linux and %TEMP% on Windows). -For new installs only, -user data is in $HOME/.i2p on Linux/Mac and -%APPDATA%\I2P on Windows. -
-The release contains several changes to reduce resource usage -(memory, CPU, and connections) and the usual assortment of bug fixes. +The release also contains several changes to reduce memory and CPU usage, +and a large assortment of bug fixes. Upgrading is recommended. -
-This is the first release built and signed by zzz. -Thanks again to Complication for his many contributions to the project -over the past five years. -I2P is undergoing the most rapid development in years. Please give the +Please give the developers feedback on IRC #i2p or forum.i2p and get involved!
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 9a7f805ca..8aa072fcf 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,9 +18,9 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 26; + public final static long BUILD = 0; /** for example "-test" */ - public final static String EXTRA = "-rc"; + public final static String EXTRA = ""; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index fd2d6021a..0a61335a9 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -177,7 +177,8 @@ class PeerTestManager { testComplete(false); } catch (UnknownHostException uhe) { if (_log.shouldLog(Log.ERROR)) - _log.error("Unable to get our IP from bob's reply: " + from + ", " + testInfo, uhe); + _log.error("Unable to get our IP (length " + ip.length + + ") from bob's reply: " + from + ", " + testInfo, uhe); } } else { PeerState charlieSession = _transport.getPeerState(from); 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 d431913d1..06b429889 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -40,7 +40,6 @@ import net.i2p.util.SimpleTimer; * */ public class UDPTransport extends TransportImpl implements TimedWeightedPriorityMessageQueue.FailedListener { - private RouterContext _rContext; private Log _log; private UDPEndpoint _endpoint; /** Peer (Hash) to PeerState */ diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java b/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java index 40e4d456e..4289f146f 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelGatewayZeroHop.java @@ -12,8 +12,6 @@ import net.i2p.util.Log; * */ public class TunnelGatewayZeroHop extends TunnelGateway { - private RouterContext TunnelContext; - private Log TunnelLog; private TunnelCreatorConfig _config; private OutboundMessageDistributor _outDistributor; private InboundMessageDistributor _inDistributor; @@ -23,11 +21,9 @@ public class TunnelGatewayZeroHop extends TunnelGateway { */ public TunnelGatewayZeroHop(RouterContext context, TunnelCreatorConfig config) { super(context, null, null, null); - TunnelContext = context; - TunnelLog = context.logManager().getLog(TunnelGatewayZeroHop.class); _config = config; if (config.isInbound()) - _inDistributor = new InboundMessageDistributor(TunnelContext, config.getDestination()); + _inDistributor = new InboundMessageDistributor(context, config.getDestination()); else _outDistributor = new OutboundMessageDistributor(context, 400); } @@ -53,8 +49,8 @@ public class TunnelGatewayZeroHop extends TunnelGateway { */ @Override public void add(I2NPMessage msg, Hash toRouter, TunnelId toTunnel) { - if (TunnelLog.shouldLog(Log.DEBUG)) - TunnelLog.debug("zero hop gateway: distribute " + (_config.isInbound() ? "inbound " : " outbound ") + if (_log.shouldLog(Log.DEBUG)) + _log.debug("zero hop gateway: distribute " + (_config.isInbound() ? "inbound " : " outbound ") + " to " + (toRouter != null ? toRouter.toBase64().substring(0,4) : "" ) + "." + (toTunnel != null ? toTunnel.getTunnelId() + "" : "") + ": " + msg);