Author: toad
Date: 2008-11-28 00:22:32 +0000 (Fri, 28 Nov 2008)
New Revision: 23934

Modified:
   trunk/freenet/src/freenet/keys/FreenetURI.java
   trunk/freenet/src/freenet/node/NodeStarter.java
   trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java
   trunk/freenet/src/freenet/node/updater/NodeUpdater.java
Log:
Do not update past RECOMMENDED_EXT_BUILD_NUMBER.
Do start the ext updater even if we already have the recommended version, so we 
can propagate it via UOM.


Modified: trunk/freenet/src/freenet/keys/FreenetURI.java
===================================================================
--- trunk/freenet/src/freenet/keys/FreenetURI.java      2008-11-27 23:35:49 UTC 
(rev 23933)
+++ trunk/freenet/src/freenet/keys/FreenetURI.java      2008-11-28 00:22:32 UTC 
(rev 23934)
@@ -845,4 +845,9 @@
        public URI toURI(String basePath) throws URISyntaxException {
                return new URI(basePath + toString(false, false));
        }
+
+       public FreenetURI sskForUSK() {
+               if(!keyType.equalsIgnoreCase("USK")) throw new 
IllegalStateException();
+               return new FreenetURI("SSK", docName+"-"+suggestedEdition, 
metaStr, routingKey, cryptoKey, extra, 0);
+       }
 }

Modified: trunk/freenet/src/freenet/node/NodeStarter.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeStarter.java     2008-11-27 23:35:49 UTC 
(rev 23933)
+++ trunk/freenet/src/freenet/node/NodeStarter.java     2008-11-28 00:22:32 UTC 
(rev 23934)
@@ -37,7 +37,8 @@
         * This will be included in the jar manifest file so we can check it 
when we download new builds. */
        public final static int REQUIRED_EXT_BUILD_NUMBER = 25;
        /** Freenet will function best with this build of freenet-ext.jar. 
-        * It may be required in the near future. The node will try to download 
it. */
+        * It may be required in the near future. The node will try to download 
it. 
+        * The node will not update to a later ext version than this, because 
that might be incompatible. */
        public final static int RECOMMENDED_EXT_BUILD_NUMBER = 26;
        /*
        (File.separatorChar == '\\') &&

Modified: trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java       
2008-11-27 23:35:49 UTC (rev 23933)
+++ trunk/freenet/src/freenet/node/updater/NodeUpdateManager.java       
2008-11-28 00:22:32 UTC (rev 23934)
@@ -235,9 +235,8 @@
                                        throw new 
InvalidConfigValueException(l10n("noUpdateWithoutWrapper"));
                                }
                                // Start it
-                               mainUpdater = new NodeUpdater(this, updateURI, 
false, Version.buildNumber(), "main-jar-");
-                               if(shouldUpdateExt)
-                                       extUpdater = new NodeUpdater(this, 
extURI, true, NodeStarter.extBuildNumber, "ext-jar-");
+                               mainUpdater = new NodeUpdater(this, updateURI, 
false, Version.buildNumber(), Integer.MAX_VALUE, "main-jar-");
+                               extUpdater = new NodeUpdater(this, extURI, 
true, NodeStarter.extBuildNumber, NodeStarter.RECOMMENDED_EXT_BUILD_NUMBER, 
"ext-jar-");
                        }
                }
                if(!enable) {

Modified: trunk/freenet/src/freenet/node/updater/NodeUpdater.java
===================================================================
--- trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2008-11-27 
23:35:49 UTC (rev 23933)
+++ trunk/freenet/src/freenet/node/updater/NodeUpdater.java     2008-11-28 
00:22:32 UTC (rev 23934)
@@ -41,13 +41,14 @@
        private int fetchingVersion;
        private int fetchedVersion;
        private int writtenVersion;
+       private int maxDeployVersion;
        private boolean isRunning;
        private boolean isFetching;
        public final boolean extUpdate;
        private final String blobFilenamePrefix;
        private File tempBlobFile;
 
-       NodeUpdater(NodeUpdateManager manager, FreenetURI URI, boolean 
extUpdate, int current, String blobFilenamePrefix) {
+       NodeUpdater(NodeUpdateManager manager, FreenetURI URI, boolean 
extUpdate, int current, int max, String blobFilenamePrefix) {
                logMINOR = Logger.shouldLog(Logger.MINOR, this);
                this.manager = manager;
                this.node = manager.node;
@@ -61,6 +62,7 @@
                this.isFetching = false;
                this.extUpdate = extUpdate;
                this.blobFilenamePrefix = blobFilenamePrefix;
+               this.maxDeployVersion = max;
 
                FetchContext tempContext = core.makeClient((short) 0, 
true).getFetchContext();
                tempContext.allowSplitfiles = true;
@@ -91,6 +93,8 @@
                                return;
                        found = (int) key.suggestedEdition;
 
+                       if(found > maxDeployVersion) found = maxDeployVersion;
+                       
                        if(found <= availableVersion)
                                return;
                        Logger.minor(this, "Updating availableVersion from " + 
availableVersion + " to " + found + " and queueing an update");
@@ -139,8 +143,13 @@
                                                System.err.println("Starting " 
+ (extUpdate ? "freenet-ext.jar " : "") + "fetch for " + availableVersion);
                                        tempBlobFile =
                                                
File.createTempFile(blobFilenamePrefix + availableVersion + "-", ".fblob.tmp", 
manager.node.clientCore.getPersistentTempDir());
+                                       FreenetURI uri = 
URI.setSuggestedEdition(availableVersion);
+                                       if(maxDeployVersion != 
Integer.MAX_VALUE) {
+                                               uri = uri.sskForUSK();
+                                               if(logMINOR) Logger.minor(this, 
"Fetching SSK not USK because of upper limit: "+uri);
+                                       }
                                        cg = new ClientGetter(this, 
core.requestStarters.chkFetchScheduler, core.requestStarters.sskFetchScheduler,
-                                               
URI.setSuggestedEdition(availableVersion), ctx, 
RequestStarter.IMMEDIATE_SPLITFILE_PRIORITY_CLASS,
+                                               uri, ctx, 
RequestStarter.IMMEDIATE_SPLITFILE_PRIORITY_CLASS,
                                                this, null, new 
FileBucket(tempBlobFile, false, false, false, false, false));
                                        toStart = cg;
                                }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to