Author: toad
Date: 2008-08-02 19:52:49 +0000 (Sat, 02 Aug 2008)
New Revision: 21585
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
Log:
Revert 21497, and implement correctly: Don't re-fetch a version we already have.
URGENTLY NEEDS TESTING!!
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-08-02 19:44:14 UTC
(rev 21584)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-08-02 19:52:49 UTC
(rev 21585)
@@ -1916,6 +1916,7 @@
messagesTellDisconnected =
(MessageItem[]) messagesToSendNow.toArray(new
MessageItem[messagesToSendNow.size()]);
messagesToSendNow.clear();
}
+ this.offeredMainJarVersion = 0;
} // else it's a rekey
if(unverified) {
if(unverifiedTracker != null) {
@@ -3990,4 +3991,14 @@
public void incrementNumberOfSelections() {
numberOfSelections++;
}
+
+ private long offeredMainJarVersion;
+
+ public void setMainJarOfferedVersion(long mainJarVersion) {
+ offeredMainJarVersion = mainJarVersion;
+ }
+
+ public long getMainJarOfferedVersion() {
+ return offeredMainJarVersion;
+ }
}
Modified: trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-08-02 19:44:14 UTC (rev 21584)
+++ trunk/freenet/src/freenet/node/updater/UpdateOverMandatoryManager.java
2008-08-02 19:52:49 UTC (rev 21585)
@@ -216,6 +216,7 @@
Logger.normal(this, "We received a valid UOMAnnounce :
(isOutdated="+isOutdated+" version="+mainJarVersion +"
whenToTakeOverTheNormalUpdater="+TimeUtil.formatTime(whenToTakeOverTheNormalUpdater-now)+')');
if(mainJarVersion > Version.buildNumber() && mainJarFileLength
> 0 &&
mainJarVersion >
updateManager.newMainJarVersion()) {
+ source.setMainJarOfferedVersion(mainJarVersion);
// Offer is valid.
if((isOutdated) || (whenToTakeOverTheNormalUpdater > 0
&& whenToTakeOverTheNormalUpdater < now)) {
// Take up the offer, subject to limits on
number of simultaneous downloads.
@@ -265,6 +266,13 @@
private void sendUOMRequestMain(final PeerNode source, boolean
addOnFail) {
synchronized(this) {
+ long offeredVersion = source.getMainJarOfferedVersion();
+ if(offeredVersion < updateManager.newMainJarVersion()) {
+ if(offeredVersion <= 0)
+ Logger.error(this, "Not sending UOM
request to "+source+" because it hasn't offered anything!");
+ if(logMINOR) Logger.minor(this, "Not sending
UOM request to "+source+" because we already have its offered version
"+offeredVersion);
+ return;
+ }
if(updateManager.getMainVersion() >=
updateManager.newMainJarVersion()) return;
if(nodesAskedSendMainJar.contains(source)) {
if(logMINOR) Logger.minor(this, "Recently asked
node "+source+" so not re-asking yet.");