!((ClientCHK)redirectedKey).isCompressed(),
true, true,
context);
}
if(metadata.isCompressed()) {
COMPRESSOR_TYPE codec = metadata.getCompressionCodec();
f.addDecompressor(codec);
}
parent.onTransition(this, f, context);
f.schedule(context);
// All done! No longer our problem!
archiveMetadata = null; // passed on
return;
} else if(metadata.isSplitfile()) {
if(logMINOR) Logger.minor(this, "Fetching splitfile");
clientMetadata.mergeNoOverwrite(metadata.getClientMetadata()); // even splitfiles can have mime types!
String mimeType = clientMetadata.getMIMETypeNoParams();
if(mimeType != null && ArchiveManager.ARCHIVE_TYPE.isUsableArchiveType(mimeType) && metaStrings.size() > 0) {
// Looks like an implicit archive, handle as such
metadata.setArchiveManifest();
// Pick up MIME type from inside archive
clientMetadata.clear();
if(logMINOR) Logger.minor(this, "Handling implicit container... (splitfile)");
continue;
} else {
if(clientMetadata != null && !clientMetadata.isTrivial())
rcb.onExpectedMIME(clientMetadata, context);
}
if(metaStrings.isEmpty() && isFinal && mimeType != null && ctx.allowedMIMETypes != null &&
!ctx.allowedMIMETypes.contains(mimeType)) {
// Just in case...
long len = metadata.uncompressedDataLength();
throw new FetchException(FetchExceptionMode.WRONG_MIME_TYPE, len, false, clientMetadata.getMIMEType());
}
// Splitfile (possibly compressed)
if(metadata.isCompressed()) {
COMPRESSOR_TYPE codec = metadata.getCompressionCodec();
addDecompressor(codec);
}
if(isFinal && !ctx.ignoreTooManyPathComponents) {
if(!metaStrings.isEmpty()) {