Author: toad
Date: 2008-04-05 19:44:25 +0000 (Sat, 05 Apr 2008)
New Revision: 19046
Modified:
trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
trunk/freenet/src/freenet/clients/http/ToadletContainer.java
trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
Log:
Fix "Method Not Allowed"
Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2008-04-05 19:34:01 UTC (rev 19045)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2008-04-05 19:44:25 UTC (rev 19046)
@@ -43,6 +43,7 @@
import freenet.support.api.BucketFactory;
import freenet.support.api.IntCallback;
import freenet.support.api.StringCallback;
+import freenet.support.io.ArrayBucketFactory;
public final class SimpleToadletServer implements ToadletContainer, Runnable {
@@ -585,7 +586,7 @@
synchronized(SimpleToadletServer.this) {
c = core;
}
- ToadletContextImpl.handle(sock,
SimpleToadletServer.this, bf, pageMaker, c != null);
+ ToadletContextImpl.handle(sock,
SimpleToadletServer.this, pageMaker);
} catch (OutOfMemoryError e) {
OOMHandler.handleOOM(e);
System.err.println("SimpleToadletServer request
above failed.");
@@ -675,5 +676,13 @@
public boolean enableInlinePrefetch() {
return enableInlinePrefetch;
}
+
+ public synchronized boolean allowPosts() {
+ return !(bf instanceof ArrayBucketFactory);
+ }
+
+ public synchronized BucketFactory getBucketFactory() {
+ return bf;
+ }
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContainer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContainer.java
2008-04-05 19:34:01 UTC (rev 19045)
+++ trunk/freenet/src/freenet/clients/http/ToadletContainer.java
2008-04-05 19:44:25 UTC (rev 19046)
@@ -8,6 +8,7 @@
import java.net.URISyntaxException;
import freenet.support.HTMLNode;
+import freenet.support.api.BucketFactory;
/** Interface for toadlet containers. Toadlets should register here. */
public interface ToadletContainer {
@@ -48,4 +49,10 @@
public boolean enablePersistentConnections();
public boolean enableInlinePrefetch();
+
+ /** Get the BucketFactory */
+ public BucketFactory getBucketFactory();
+
+ /** Can we deal with POSTs yet? */
+ public boolean allowPosts();
}
Modified: trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2008-04-05 19:34:01 UTC (rev 19045)
+++ trunk/freenet/src/freenet/clients/http/ToadletContextImpl.java
2008-04-05 19:44:25 UTC (rev 19046)
@@ -215,7 +215,7 @@
/**
* Handle an incoming connection. Blocking, obviously.
*/
- public static void handle(Socket sock, ToadletContainer container,
BucketFactory bf, PageMaker pageMaker, boolean allowPost) {
+ public static void handle(Socket sock, ToadletContainer container,
PageMaker pageMaker) {
try {
InputStream is = new
BufferedInputStream(sock.getInputStream(), 4096);
@@ -277,6 +277,9 @@
boolean disconnect =
shouldDisconnectAfterHandled(split[2].equals("HTTP/1.0"), headers) ||
!container.enablePersistentConnections();
+ boolean allowPost = container.allowPosts();
+ BucketFactory bf = container.getBucketFactory();
+
ToadletContextImpl ctx = new
ToadletContextImpl(sock, headers, bf, pageMaker, container);
ctx.shouldDisconnect = disconnect;