Author: toad
Date: 2006-03-14 00:31:13 +0000 (Tue, 14 Mar 2006)
New Revision: 8243

Modified:
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
   trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
Log:
533:
Bugfixes for persistent putdir's with redirects.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-03-13 22:22:36 UTC (rev 
8242)
+++ trunk/freenet/src/freenet/node/Version.java 2006-03-14 00:31:13 UTC (rev 
8243)
@@ -20,7 +20,7 @@
        public static final String protocolVersion = "1.0";

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

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

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-03-13 
22:22:36 UTC (rev 8242)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-03-14 
00:31:13 UTC (rev 8243)
@@ -64,8 +64,10 @@
                        String uploadFrom = subset.get("UploadFrom");
                        Bucket data;
                        Logger.minor(this, "Parsing "+i);
-                       long sz = Long.parseLong(subset.get("DataLength"));
+                       Logger.minor(this, "UploadFrom="+uploadFrom);
+                       ManifestElement me;
                        if(uploadFrom == null || 
uploadFrom.equalsIgnoreCase("direct")) {
+                               long sz = 
Long.parseLong(subset.get("DataLength"));
                                if(!finished) {
                                        // Direct (persistent temp bucket)
                                        byte[] key = 
HexUtil.hexToBytes(subset.get("TempBucket.DecryptKey"));
@@ -76,7 +78,9 @@
                                } else {
                                        data = null;
                                }
-                       } else {
+                               me = new ManifestElement(name, data, 
contentTypeOverride, sz);
+                       } else if(uploadFrom.equalsIgnoreCase("disk")) {
+                               long sz = 
Long.parseLong(subset.get("DataLength"));
                                // Disk
                                String f = subset.get("Filename");
                                if(f == null)
@@ -87,8 +91,12 @@
                                        throw new IOException("File no longer 
exists, cancelling upload: "+ff);
                                }
                                data = new FileBucket(ff, true, false, false, 
false);
-                       }
-                       ManifestElement me = new ManifestElement(name, data, 
contentTypeOverride, sz);
+                               me = new ManifestElement(name, data, 
contentTypeOverride, sz);
+                       } else if(uploadFrom.equalsIgnoreCase("redirect")) {
+                               FreenetURI targetURI = new 
FreenetURI(subset.get("TargetURI"));
+                               me = new ManifestElement(name, targetURI, 
contentTypeOverride);
+                       } else
+                               throw new PersistenceParseException("Don't know 
UploadFrom="+uploadFrom);
                        v.add(me);
                }
                manifestElements = SimpleManifestPutter.unflatten(v);

Modified: trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2006-03-13 
22:22:36 UTC (rev 8242)
+++ trunk/freenet/src/freenet/node/fcp/PersistentPutDir.java    2006-03-14 
00:31:13 UTC (rev 8243)
@@ -56,21 +56,27 @@
                        ManifestElement e = elements[i];
                        String name = e.getName();
                        String mimeOverride = e.getMimeTypeOverride();
-                       Bucket data = e.getData();
                        SimpleFieldSet subset = new SimpleFieldSet(true);
+                       FreenetURI uri = e.getTargetURI();
                        subset.put("Name", name);
-                       subset.put("DataLength", Long.toString(e.getSize()));
-                       if(mimeOverride != null)
-                               subset.put("Metadata.ContentType", 
mimeOverride);
-                       // What to do with the bucket?
-                       // It is either a persistent encrypted bucket or a file 
bucket ...
-                       if(data instanceof FileBucket) {
-                               subset.put("UploadFrom", "disk");
-                               subset.put("Filename", 
((FileBucket)data).getFile().getPath());
-                       } else if(data instanceof 
PaddedEphemerallyEncryptedBucket || data == null) {
-                               subset.put("UploadFrom", "direct");
+                       if(uri != null) {
+                               subset.put("UploadFrom", "redirect");
+                               subset.put("TargetURI", uri.toString());
                        } else {
-                               throw new IllegalStateException("Don't know 
what to do with bucket: "+data);
+                               Bucket data = e.getData();
+                               subset.put("DataLength", 
Long.toString(e.getSize()));
+                               if(mimeOverride != null)
+                                       subset.put("Metadata.ContentType", 
mimeOverride);
+                               // What to do with the bucket?
+                               // It is either a persistent encrypted bucket 
or a file bucket ...
+                               if(data instanceof FileBucket) {
+                                       subset.put("UploadFrom", "disk");
+                                       subset.put("Filename", 
((FileBucket)data).getFile().getPath());
+                               } else if(data instanceof 
PaddedEphemerallyEncryptedBucket || data == null) {
+                                       subset.put("UploadFrom", "direct");
+                               } else {
+                                       throw new IllegalStateException("Don't 
know what to do with bucket: "+data);
+                               }
                        }
                        files.put(num, subset);
                }


Reply via email to