aboutsummaryrefslogtreecommitdiff
path: root/doc/forum/error_302___40__Found__41___when_editing_page.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'doc/forum/error_302___40__Found__41___when_editing_page.mdwn')
-rw-r--r--doc/forum/error_302___40__Found__41___when_editing_page.mdwn59
1 files changed, 59 insertions, 0 deletions
diff --git a/doc/forum/error_302___40__Found__41___when_editing_page.mdwn b/doc/forum/error_302___40__Found__41___when_editing_page.mdwn
new file mode 100644
index 000000000..aa2db2f8a
--- /dev/null
+++ b/doc/forum/error_302___40__Found__41___when_editing_page.mdwn
@@ -0,0 +1,59 @@
+I have an [IkiWiki site](http://ocikbapps.uzh.ch/gc3wiki), which works
+fine, except for one page which I cannot edit with the CGI. Only this
+single page is failing, editing every other works as expected.
+
+When clicking every button (well, except "Cancel") on the edit form, I
+get a "302 Found" page in the browser; the Apache logs show:
+
+ [client XXX] malformed header from script. Bad header=according%20to%20the%20availab: ikiwiki.cgi
+
+Capturing the output from `ikiwiki.cgi`, I see that just these two
+lines are sent:
+
+ Status: 302 Found
+ Location: https://ocikbapps.uzh.ch/gc3wiki/ikiwiki.auth.cgi?_submitted=1;do=edit;..;_submit=Preview;attachment=
+
+The total size in bytes of the reply is 16189; I thought this might be
+an issue with Apache imposing some limit on the header size; indeed,
+`tcpflow` shows that the "302 Found" message is encapsulated into an
+HTTP 500 "internal server error" response.
+
+So I added this to Apache's config (std Debian 6.0):
+
+ # cat /etc/apache2/conf.d/limits.conf
+ LimitRequestFieldSize 65534
+ LimitRequestLine 65534
+
+But I'm still getting the same error.
+
+Any suggestions?
+
+
+**Update 2011-08-16:**
+[This bug report](https://bugzilla.mozilla.org/show_bug.cgi?id=513989)
+shows the exact same symptoms; the solution they adopted is to not
+perform the redirect when the URL length exceeds the default Apache
+value of 8190.
+
+Regarding Apache limits: apparently, Apache (as of version 2.2.17)
+only applies the `LimitRequestLine` and `LimitRequestFiledsize` in
+client HTTP transactions; when dealing with the HTTP responses
+generated by CGI scripts, the code from `server/util_script.c`
+applies: (function `ap_scan_script_header_err_core`, lines 403--433)
+
+ char x[MAX_STRING_LEN];
+ char *w, *l;
+ [...]
+ if (buffer) {
+ *buffer = '\0';
+ }
+ w = buffer ? buffer : x;
+ [...]
+ while (1) {
+ int rv = (*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data);
+
+where `MAX_STRING_LEN` is defined in `httpd.h` to be equal to
+`HUGE_STRING_LEN`, that is, 8192.
+
+> This has been filed as [[!debbug 638009]], so let's only
+> discuss it in one place (ie, there) --[[Joey]]