Author: toad
Date: 2006-01-13 17:05:51 +0000 (Fri, 13 Jan 2006)
New Revision: 7850
Modified:
trunk/freenet/src/freenet/client/Fetcher.java
trunk/freenet/src/freenet/client/FileInserter.java
trunk/freenet/src/freenet/client/Metadata.java
trunk/freenet/src/freenet/node/Version.java
Log:
346: Fix data corruption (not marking compressed files as compressed).
Modified: trunk/freenet/src/freenet/client/Fetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/Fetcher.java 2006-01-12 23:15:21 UTC
(rev 7849)
+++ trunk/freenet/src/freenet/client/Fetcher.java 2006-01-13 17:05:51 UTC
(rev 7850)
@@ -276,7 +276,7 @@
} // else just fetch it, create context later
}
FetchResult fr = realRun(dm, recursionLevel, uri,
dontEnterImplicitArchives, localOnly);
- if(metadata.compressed) {
+ if(metadata.isCompressed()) {
Compressor codec =
Compressor.getCompressionAlgorithmByMetadataID(metadata.compressionCodec);
Bucket data = fr.data;
Bucket output;
@@ -316,7 +316,8 @@
SplitFetcher sf = new SplitFetcher(metadata,
archiveContext, newCtx, recursionLevel);
Bucket sfResult = sf.fetch(); // will throw in event of
error
- if(metadata.compressed) {
+ if(metadata.isCompressed()) {
+ Logger.minor(this, "Is compressed:
"+metadata.compressionCodec);
Compressor codec =
Compressor.getCompressionAlgorithmByMetadataID(metadata.compressionCodec);
try {
long maxLen = ctx.maxTempLength;
@@ -327,7 +328,8 @@
} catch (CompressionOutputSizeException e) {
throw new
FetchException(FetchException.TOO_BIG);
}
- }
+ } else
+ Logger.minor(this, "Not compressed
("+metadata.compressionCodec+")");
return new FetchResult(dm, sfResult);
} else {
Logger.error(this, "Don't know what to do with
metadata: "+metadata);
Modified: trunk/freenet/src/freenet/client/FileInserter.java
===================================================================
--- trunk/freenet/src/freenet/client/FileInserter.java 2006-01-12 23:15:21 UTC
(rev 7849)
+++ trunk/freenet/src/freenet/client/FileInserter.java 2006-01-13 17:05:51 UTC
(rev 7850)
@@ -99,6 +99,7 @@
data = result;
if(bestCompressedData != null)
ctx.bf.freeBucket(bestCompressedData);
+ bestCompressedData = data;
break;
}
if(bestCompressedData != null &&
result.size() < bestCompressedData.size()) {
Modified: trunk/freenet/src/freenet/client/Metadata.java
===================================================================
--- trunk/freenet/src/freenet/client/Metadata.java 2006-01-12 23:15:21 UTC
(rev 7849)
+++ trunk/freenet/src/freenet/client/Metadata.java 2006-01-13 17:05:51 UTC
(rev 7850)
@@ -76,6 +76,8 @@
if(documentType < 0 || documentType > 5 ||
(documentType == ZIP_INTERNAL_REDIRECT &&
!acceptZipInternalRedirects))
throw new MetadataParseException("Unsupported document
type: "+documentType);
+
+ boolean compressed = false;
if(documentType == SIMPLE_REDIRECT || documentType ==
MULTI_LEVEL_METADATA
|| documentType == ZIP_MANIFEST) {
short flags = dis.readShort();
@@ -500,8 +502,6 @@
boolean fullKeys;
/** Non-final splitfile chunks can be non-full */
boolean splitUseLengths;
- /** Compressed splitfile */
- boolean compressed;
static final short FLAGS_SPLITFILE = 1;
static final short FLAGS_DBR = 2;
static final short FLAGS_NO_MIME = 4;
@@ -672,7 +672,7 @@
if(extraMetadata) flags |= FLAGS_EXTRA_METADATA;
if(fullKeys) flags |= FLAGS_FULL_KEYS;
if(splitUseLengths) flags |= FLAGS_SPLIT_USE_LENGTHS;
- if(compressed) flags |= FLAGS_COMPRESSED;
+ if(compressionCodec >= 0) flags |= FLAGS_COMPRESSED;
dos.writeShort(flags);
}
@@ -684,7 +684,7 @@
dos.writeLong(dataLength);
}
- if(compressed) {
+ if(compressionCodec >= 0) {
dos.writeShort(compressionCodec);
dos.writeLong(decompressedLength);
}
@@ -765,4 +765,8 @@
public FreenetURI[] getSplitfileCheckKeys() {
return splitfileCheckKeys;
}
+
+ public boolean isCompressed() {
+ return compressionCodec >= 0;
+ }
}
Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-01-12 23:15:21 UTC (rev
7849)
+++ trunk/freenet/src/freenet/node/Version.java 2006-01-13 17:05:51 UTC (rev
7850)
@@ -20,7 +20,7 @@
public static final String protocolVersion = "1.0";
/** The build number of the current revision */
- public static final int buildNumber = 345;
+ public static final int buildNumber = 346;
/** Oldest build of Fred we will talk to */
public static final int lastGoodBuild = 344;