You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Tony Finch <do...@dotat.at> on 1999/02/09 23:42:32 UTC
Re: , was Re: cvs commit: apache-1.3/src/main http_core.c
I think you missed out a bit of my patch when merging the
<LimitExcept> functionality into ap_limit_section: you want to change
the initialisation of limited to
int limited = tog ? (1 << M_TRACE) : 0;
otherwise TRACE will be limited unless it is mentioned explicitly.
fielding@hyperreal.org wrote:
>
> Index: http_core.c
> ===================================================================
> RCS file: /home/cvs/apache-1.3/src/main/http_core.c,v
> retrieving revision 1.248
> retrieving revision 1.249
> diff -u -r1.248 -r1.249
> --- http_core.c 1999/02/06 03:02:11 1.248
> +++ http_core.c 1999/02/09 20:20:26 1.249
> @@ -1241,6 +1241,7 @@
> const char *arg)
> {
> const char *limited_methods = ap_getword(cmd->pool, &arg, '>');
> + void *tog = cmd->cmd->cmd_data;
> int limited = 0;
>
> const char *err = ap_check_cmd_context(cmd, NOT_IN_LIMIT);
> @@ -1249,7 +1250,7 @@
> }
>
> /* XXX: NB: Currently, we have no way of checking
> - * whether <Limit> sections are closed properly.
> + * whether <Limit> or <LimitExcept> sections are closed properly.
> * (If we would add a srm_command_loop() here we might...)
> */
>
> @@ -1257,26 +1258,31 @@
> char *method = ap_getword_conf(cmd->pool, &limited_methods);
> int methnum = ap_method_number_of(method);
>
> - if (methnum == M_TRACE) {
> + if (methnum == M_TRACE && !tog) {
> return "TRACE cannot be controlled by <Limit>";
> }
> else if (methnum == M_INVALID) {
> - return ap_pstrcat(cmd->pool, "unknown method \"",
> - method, "\" in <Limit>", NULL);
> + return ap_pstrcat(cmd->pool, "unknown method \"", method,
> + "\" in <Limit", tog ? "Except>" : ">", NULL);
> }
> else {
> limited |= (1 << methnum);
> }
> }
>
> - cmd->limited = limited;
> + /* Killing two features with one function,
> + * if (tog == NULL) <Limit>, else <LimitExcept>
> + */
> + cmd->limited = tog ? ~limited : limited;
> return NULL;
> }
Tony.
--
f.a.n.finch dot@dotat.at fanf@demon.net