Author: toad
Date: 2008-11-27 01:33:05 +0000 (Thu, 27 Nov 2008)
New Revision: 23900
Modified:
trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
Log:
Fix bucket leak
Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java 2008-11-27
01:32:44 UTC (rev 23899)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java 2008-11-27
01:33:05 UTC (rev 23900)
@@ -129,9 +129,11 @@
force = true;
}
+ Bucket toFree = null;
try {
if((!force) && (!forceDownload)) {
FilterOutput fo = ContentFilter.filter(data,
bucketFactory, mimeType, key.toURI(basePath),
context.getContainer().enableInlinePrefetch() ? prefetchHook : null);
+ if(data != fo.data) toFree = fo.data;
data = fo.data;
mimeType = fo.type;
@@ -258,6 +260,8 @@
byte[] pageBytes =
pageNode.generate().getBytes("UTF-8");
context.sendReplyHeaders(200, "OK", new
MultiValueTable<String, String>(), "text/html; charset=utf-8",
pageBytes.length);
context.writeData(pageBytes);
+ } finally {
+ if(toFree != null) toFree.free();
}
}
@@ -424,6 +428,7 @@
if(override.length() == 0) override = "?forcedownload";
else override = override+"&forcedownload";
}
+ Bucket data = null;
try {
if(Logger.shouldLog(Logger.MINOR, this))
Logger.minor(this, "FProxy fetching "+key+"
("+maxSize+ ')');
@@ -431,7 +436,7 @@
// Now, is it safe?
- Bucket data = result.asBucket();
+ data = result.asBucket();
String mimeType = result.getMimeType();
String referer = sanitizeReferer(ctx);
@@ -549,6 +554,8 @@
throw e;
} catch (Throwable t) {
writeInternalError(t, ctx);
+ } finally {
+ if(data != null) data.free();
}
}
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs