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.");


Reply via email to