Commit c40f5842 authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

Expose ap_method_register() to the admin with a new RegisterHttpMethod

directive.
Backports: r1407599
Submitted by: sf


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x-merge-http-strict@1767942 13f79535-47bb-0310-9956-ffa450edef68
parent 362ccb09
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,6 +2,9 @@

Changes with Apache 2.4.24

  *) core: New directive RegisterHttpMethod for registering non-standard
     HTTP methods. [Stefan Fritsch]

  *) core: New directive HttpProtocol which allows to disable HTTP/0.9
     support. [Stefan Fritsch]

+15 −0
Original line number Diff line number Diff line
@@ -4766,5 +4766,20 @@ as if 'QualifyRedirectURL ON' was configured.</compatibility>
</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>
+11 −0
Original line number Diff line number Diff line
@@ -3917,6 +3917,15 @@ static const char *set_http_protocol(cmd_parms *cmd, void *dummy,
    return "HttpProtocol must be min=0.9|1.0";
}

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,
@@ -4443,6 +4452,8 @@ AP_INIT_TAKE1("ProtocolsHonorOrder", set_protocols_honor_order, NULL, RSRC_CONF,
              "by default the client specified order determines selection"),
AP_INIT_TAKE1("HttpProtocol", set_http_protocol, NULL, RSRC_CONF,
              "'min=0.9' (default) or 'min=1.0' to allow/deny HTTP/0.9"),
AP_INIT_ITERATE("RegisterHttpMethod", set_http_method, NULL, RSRC_CONF,
                "Registers non-standard HTTP methods"),
{ NULL }
};