Author: toad
Date: 2006-08-16 18:45:53 +0000 (Wed, 16 Aug 2006)
New Revision: 10123

Modified:
   trunk/freenet/src/freenet/client/async/SingleFileInserter.java
   trunk/freenet/src/freenet/node/Version.java
Log:
944: Fix insert-resuming-causes-corruption (inserting the metadata as data) bug 
(second part of fix :) )

Modified: trunk/freenet/src/freenet/client/async/SingleFileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-16 16:58:39 UTC (rev 10122)
+++ trunk/freenet/src/freenet/client/async/SingleFileInserter.java      
2006-08-16 18:45:53 UTC (rev 10123)
@@ -83,7 +83,7 @@
                                // If we succeed, we bypass both compression 
and FEC encoding!
                                try {
                                        SplitHandler sh = new SplitHandler();
-                                       sh.start(fs);
+                                       sh.start(fs, false);
                                        cb.onTransition(this, sh);
                                        return;
                                } catch (ResumeException e) {
@@ -288,26 +288,29 @@
                 * @throws InserterException Thrown if some other error 
prevents the insert
                 * from starting.
                 */
-               void start(SimpleFieldSet fs) throws ResumeException, 
InserterException {
+               void start(SimpleFieldSet fs, boolean forceMetadata) throws 
ResumeException, InserterException {

+                       boolean meta = metadata || forceMetadata;
+                       
                        // Don't include the booleans; wait for the callback.

                        SimpleFieldSet sfiFS = fs.subset("SplitFileInserter");
                        if(sfiFS == null)
                                throw new ResumeException("No 
SplitFileInserter");
                        ClientPutState newSFI, newMetaPutter = null;
-                       newSFI = new SplitFileInserter(parent, this, 
block.clientMetadata, ctx, getCHKOnly, metadata, token, 
insertAsArchiveManifest, sfiFS);
+                       newSFI = new SplitFileInserter(parent, this, 
block.clientMetadata, ctx, getCHKOnly, meta, token, insertAsArchiveManifest, 
sfiFS);
                        fs.removeSubset("SplitFileInserter");
                        SimpleFieldSet metaFS = fs.subset("MetadataPutter");
                        if(metaFS != null) {
                                try {
                                        String type = metaFS.get("Type");
                                        if(type.equals("SplitFileInserter")) {
+                                               // FIXME 
insertAsArchiveManifest ?!?!?!
                                                newMetaPutter = 
                                                        new 
SplitFileInserter(parent, this, block.clientMetadata, ctx, getCHKOnly, true, 
token, insertAsArchiveManifest, metaFS);
                                        } else if(type.equals("SplitHandler")) {
                                                newMetaPutter = new 
SplitHandler();
-                                               
((SplitHandler)newMetaPutter).start(metaFS);
+                                               
((SplitHandler)newMetaPutter).start(metaFS, true);
                                        }
                                } catch (ResumeException e) {
                                        // Ignore, it will be reconstructed 
later

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-08-16 16:58:39 UTC (rev 
10122)
+++ trunk/freenet/src/freenet/node/Version.java 2006-08-16 18:45:53 UTC (rev 
10123)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 943;
+       private static final int buildNumber = 944;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 920;


Reply via email to