Author: andreas
Date: Sat Sep 24 17:48:02 2005
New Revision: 9975
Modified:
trunk/libraries/koala/sources/koala/headers.dylan
trunk/libraries/koala/sources/koala/responders.dylan
trunk/libraries/koala/sources/koala/server.dylan
Log:
bug: 7219
* increase the default maximum POST request size to 16M
* disable /koala/shutdown handler
* decode URL encoding after splitting request parameters, not before
Modified: trunk/libraries/koala/sources/koala/headers.dylan
==============================================================================
--- trunk/libraries/koala/sources/koala/headers.dylan (original)
+++ trunk/libraries/koala/sources/koala/headers.dylan Sat Sep 24 17:48:02 2005
@@ -17,7 +17,7 @@
define variable *header-buffer-growth-amount* :: limited(<integer>, min: 1) =
1024;
// Max size of data in a POST.
-define variable *max-post-size* :: false-or(<integer>) = 16384;
+define variable *max-post-size* :: false-or(<integer>) = 16*1024*1024;
// The buffer/epos values are for internal use, wouldn't expect to doc 'em.
define function read-message-headers (stream :: <stream>,
Modified: trunk/libraries/koala/sources/koala/responders.dylan
==============================================================================
--- trunk/libraries/koala/sources/koala/responders.dylan (original)
+++ trunk/libraries/koala/sources/koala/responders.dylan Sat Sep 24
17:48:02 2005
@@ -49,6 +49,7 @@
// Shutdown the server. You definately don't want this active in a
// production setting.
//
+/*
define responder shutdown-responder ("/koala/shutdown")
(request, response)
let stream = output-stream(response);
@@ -57,6 +58,7 @@
force-output(stream);
stop-server(abort: #t);
end;
+*/
// Load a module
//
Modified: trunk/libraries/koala/sources/koala/server.dylan
==============================================================================
--- trunk/libraries/koala/sources/koala/server.dylan (original)
+++ trunk/libraries/koala/sources/koala/server.dylan Sat Sep 24 17:48:02 2005
@@ -654,8 +654,8 @@
request.request-url := substring(buffer, bpos, qpos | epos);
if (qpos)
log-debug("Request query string = %s", copy-sequence(buffer, start:
qpos + 1, end: epos));
- let query = decode-url(buffer, qpos + 1, epos);
- extract-query-values(query, 0, size(query),
request.request-query-values)
+ extract-query-values(buffer, qpos + 1, epos,
+ request.request-query-values)
end;
let bpos = skip-whitespace(buffer, epos, eol);
let vpos = whitespace-position(buffer, bpos, eol) | eol;
@@ -732,7 +732,8 @@
let content = decode-url(buffer, 0, content-length);
// By the time we get here request-query-values has already been bound to
a <string-table>
// containing the URL query values. Now we augment it with any form
values.
- extract-query-values(content, 0, content.size,
request.request-query-values);
+ extract-query-values(buffer, 0, content-length,
+ request.request-query-values);
request-content(request) := content
// ---TODO: Deal with content types intelligently. For now this'll have to
do.
elseif (member?(content-type, #["text/xml", "text/html", "text/plain"],
@@ -997,7 +998,7 @@
end;
end extract-request-version;
-// Turn a string like "foo=8&bar=&baz=zzz" into a <string-table> with the
"obvious" keys/vals.
+/ Turn a string like "foo=8&bar=&baz=zzz" into a <string-table> with the
"obvious" keys/vals.
// Note that in the above example string "bar" maps to "", not #f.
//---TODO: Find out if the query keys are case-sensitive in the HTTP spec and
make sure this
// does the right thing.
@@ -1007,8 +1008,8 @@
local method extract-key/val (beg :: <integer>, fin :: <integer>)
let eq-pos = char-position('=', buffer, beg, fin);
when (eq-pos & (eq-pos > beg))
- let key = substring(buffer, beg, eq-pos);
- let val = substring(buffer, eq-pos + 1, fin);
+ let key = decode-url(buffer, beg, eq-pos);
+ let val = decode-url(buffer, eq-pos + 1, fin);
values(key, val)
end
end;
--
Gd-chatter mailing list
Gd-chatter@xxxxxxxxxxxxxxxx
https://gauss.gwydiondylan.org/mailman/listinfo/gd-chatter
|