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);
}