diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index 655282922..51c9373b0 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -561,7 +561,7 @@ public class SnarkManager implements Snark.CompleteListener { if ( (files != null) && (files.size() > MAX_FILES_PER_TORRENT) ) { return _("Too many files in \"{0}\" ({1}), deleting it!", info.getName(), files.size()); } else if ( (files == null) && (info.getName().endsWith(".torrent")) ) { - return _("Torrent file \"{0}\" cannot end in '.torrent', deleting it!", info.getName()); + return _("Torrent file \"{0}\" cannot end in \".torrent\", deleting it!", info.getName()); } else if (info.getPieces() <= 0) { return _("No pieces in \"{0}\", deleting it!", info.getName()); } else if (info.getPieces() > Storage.MAX_PIECES) { diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java index db6de4a6e..2c9da4e47 100644 --- a/core/java/src/net/i2p/CoreVersion.java +++ b/core/java/src/net/i2p/CoreVersion.java @@ -16,7 +16,7 @@ package net.i2p; public class CoreVersion { /** deprecated */ public final static String ID = "Monotone"; - public final static String VERSION = "0.7.8"; + public final static String VERSION = "0.7.9"; public static void main(String args[]) { System.out.println("I2P Core version: " + VERSION); diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index b1fc2b226..7fdb17d00 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -289,8 +289,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After getDate / begin waiting for a response"); int waitcount = 0; while (!_dateReceived) { - if (waitcount++ > 30) + if (waitcount++ > 30) { + closeSocket(); throw new IOException("no date handshake"); + } try { synchronized (_dateReceivedLock) { _dateReceivedLock.wait(1000); @@ -307,8 +309,13 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa // wait until we have created a lease set waitcount = 0; while (_leaseSet == null) { - if (waitcount++ > 5*60) + if (waitcount++ > 5*60) { + try { + _producer.disconnect(this); + } catch (I2PSessionException ipe) {} + closeSocket(); throw new IOException("no leaseset"); + } synchronized (_leaseSetWait) { try { _leaseSetWait.wait(1000); diff --git a/history.txt b/history.txt index 218b53c02..3019c8d57 100644 --- a/history.txt +++ b/history.txt @@ -2,6 +2,16 @@ * Insert reverse connection ability into the http server code so that seedless can start to get worked on. It's disabled by default. +* 2010-01-12 0.7.9 released + +2010-01-12 zzz + * I2CP: Clean up resources on 5-minute leaseset timeout at startup + * Increase max floodfills to 9 (was 6) + * Temporarily disable routerInfo floodfill verifies + * Fix .fr eepsite index css + * Javdoc tweaks + + 2010-01-09 zzz * Include new eepsite indexes in pkg diff --git a/installer/install.xml b/installer/install.xml index 95b9c051e..e8165c52f 100644 --- a/installer/install.xml +++ b/installer/install.xml @@ -4,7 +4,7 @@ i2p - 0.7.8 + 0.7.9 diff --git a/installer/resources/eepsite_index_fr.html b/installer/resources/eepsite_index_fr.html index 74400743f..f707f96ba 100644 --- a/installer/resources/eepsite_index_fr.html +++ b/installer/resources/eepsite_index_fr.html @@ -3,7 +3,7 @@ I2P serveur web anonyme | Bienvenue à votre eepsite - +
diff --git a/installer/resources/initialNews.xml b/installer/resources/initialNews.xml index 1aa7eee97..a5dae3100 100644 --- a/installer/resources/initialNews.xml +++ b/installer/resources/initialNews.xml @@ -1,5 +1,5 @@ - - + +

  • Congratulations on getting I2P installed!

Welcome to I2P! diff --git a/installer/resources/news.xml b/installer/resources/news.xml index 080265928..fc0aa4267 100644 --- a/installer/resources/news.xml +++ b/installer/resources/news.xml @@ -1,26 +1,25 @@ - - -

+ + +

-The 9th I2P release for 2009, -0.7.8, contains initial support for router console translations, and -changes to the floodfill system which lay the foundation for supporting large growth in the network. +0.7.9 fixes several longstanding bugs causing message corruption. +We are hopeful that network performance will improve once it is widely deployed. +There are other changes that should help router reachability and tunnel build success rates. +The release also includes additional translation support, and a full Russian translation by "forget" +which was sponsored by "russiansponsor".

-To prevent easy blocking of I2P by malicious firewalls, the release randomizes the I2P port for new installs. -For existing installs, please help those who are vulnerable to blocking by changing UDP to a random port on +There are more changes to reduce memory and CPU usage, +and other bug fixes. +Upgrading is recommended. +As a reminder to those still using port 8887, +please help those who are vulnerable to blocking by changing UDP to a random port on the network configuration page and adjusting your firewall if necessary. -Say goodbye to port 8887! -

-The release also contains more changes to reduce memory and CPU usage, -and a large assortment of bug fixes. -Upgrading is recommended. -We especially encourage those of you still running release 0.7.6 or earlier to upgrade as soon as possible. Please give the -developers feedback on IRC #i2p or forum.i2p +developers feedback on IRC #i2p or forum.i2p and get involved or donate! -We are also looking for help on new and existing translations. +We are still looking for help on new and existing translations. Please volunteer on IRC #i2p.

diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 2a0f94da6..200f91ede 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,9 +18,10 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 19; + 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/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java index 24d27c27a..24a25b930 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java @@ -27,7 +27,7 @@ class FloodfillMonitorJob extends JobImpl { private static final long MIN_UPTIME = 2*60*60*1000; private static final long MIN_CHANGE_DELAY = 6*60*60*1000; private static final int MIN_FF = 4; - private static final int MAX_FF = 6; + private static final int MAX_FF = 9; private static final String PROP_FLOODFILL_PARTICIPANT = "router.floodfillParticipant"; public FloodfillMonitorJob(RouterContext context, FloodfillNetworkDatabaseFacade facade) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java index 294093627..8c332220e 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java @@ -53,6 +53,7 @@ class FloodfillStoreJob extends StoreJob { @Override protected void succeed() { super.succeed(); + if (_state != null) { // Get the time stamp from the data we sent, so the Verify job can meke sure that // it finds something stamped with that time or newer. @@ -61,6 +62,8 @@ class FloodfillStoreJob extends StoreJob { boolean isRouterInfo = data instanceof RouterInfo; if (isRouterInfo) { published = ((RouterInfo) data).getPublished(); + // Temporarily disable + return; } else if (data instanceof LeaseSet) { published = ((LeaseSet) data).getEarliestLeaseDate(); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java index 2df76e40c..2ef143fee 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/KBucketImpl.java @@ -231,7 +231,7 @@ class KBucketImpl implements KBucket { /** * Todo: shuffling here is a hack and doesn't work since - * wwe witched back to a HashSet implementation + * we switched back to a HashSet implementation */ public int add(Hash peer) { _entries.add(peer); diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index f1460b9f7..81971a2fe 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -77,7 +77,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { public boolean haveHighOutboundCapacity() { return (_manager == null ? false : _manager.haveHighOutboundCapacity()); } /** - * Framed average clock skew of connected peers in seconds, or the clock offset if we cannot answer. + * @return Framed average clock skew of connected peers in seconds, or the clock offset if we cannot answer. * Average is calculated over the middle "percentToInclude" peers. */ @Override