]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Expose ap_method_register() to the admin with a new RegisterHttpMethod
authorStefan Fritsch <sf@apache.org>
Fri, 9 Nov 2012 19:38:19 +0000 (19:38 +0000)
committerStefan Fritsch <sf@apache.org>
Fri, 9 Nov 2012 19:38:19 +0000 (19:38 +0000)
directive.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1407599 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
docs/manual/mod/core.xml
server/core.c

diff --git a/CHANGES b/CHANGES
index 92381809ce7ba245d7565c1ecb2ec34185c645bb..a16b1c2904e8a1710c22afc15457fc3b03a28de4 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.0
 
+  *) core: New directive RegisterHttpMethod for registering non-standard
+     HTTP methods. [Stefan Fritsch]
+
   *) mod_xml2enc: Fix problems with charset conversion altering the
      Content-Length. [Micha Lenk <micha lenk info>]
 
index dd59bfae4d65c1cc2e26a1f8024e2cff18dbcebe..b8e4767c02c659dd98608a2dd5fbbd2c2831dacc 100644 (file)
@@ -4403,4 +4403,20 @@ hostname or IP address</description>
     different sections are combined when a request is received</seealso>
 </directivesynopsis>
 
+<directivesynopsis>
+<name>RegisterHttpMethod</name>
+<description>Register non-standard HTTP methods</description>
+<syntax>RegisterHttpMethod <var>method</var> [<var>method</var> [...]]</syntax>
+<contextlist><context>server config</context></contextlist>
+
+<usage>
+<p>HTTP Methods that are not conforming to the relvant RFCs are normally
+rejected by request processing in Apache HTTPD. To avoid this, modules
+can register non-standard HTTP methods they support.
+The <directive>RegisterHttpMethod</directive> allows to register such
+methods manually. This can be useful for if such methods are forwared
+for external processing, e.g. to a CGI script.</p>
+</usage>
+</directivesynopsis>
+
 </modulesynopsis>
index d63b989f17adb990f325d8b4bbd64f84b0e2c76f..871c1c9750fb84ef8aca575d1c6bbcd56580c07e 100644 (file)
@@ -3633,6 +3633,15 @@ static const char *set_http_protocol(cmd_parms *cmd, void *dummy,
     return NULL;
 }
 
+static const char *set_http_method(cmd_parms *cmd, void *conf, const char *arg)
+{
+    const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
+    if (err != NULL)
+        return err;
+    ap_method_register(cmd->pool, arg);
+    return NULL;
+}
+
 static apr_hash_t *errorlog_hash;
 
 static int log_constant_item(const ap_errorlog_info *info, const char *arg,
@@ -4134,6 +4143,8 @@ AP_INIT_TAKE1("TraceEnable", set_trace_enable, NULL, RSRC_CONF,
               "'on' (default), 'off' or 'extended' to trace request body content"),
 AP_INIT_TAKE1("HttpProtocol", set_http_protocol, NULL, RSRC_CONF,
               "'+0.9' (default) or '-0.9' to allow/deny HTTP/0.9"),
+AP_INIT_ITERATE("RegisterHttpMethod", set_http_method, NULL, RSRC_CONF,
+                "Registers non-standard HTTP methods"),
 { NULL }
 };