Christopher Stanton wrote:
> I am trying to set the allowed bitmask in a custom request handler
> when I receive the OPTIONS method (and when I receive a method request
> for a method I do not support).
>
> I have followed the example in
> http://perl.apache.org/docs/2.0/api/...tml#C_allowed_
> but Apache always returns "Allow: GET,HEAD,POST,OPTIONS,TRACE" in the
> header irrespective of what options I set.
>
> For example, lets say I only accept PUT to try to restrict the
> available options to OPTIONS, TRACE, and PUT.
>
> I have tried both
> $r->allowed($r->allowed | (1<< Apache2::Const::M_PUT));
> and
> $r->allowed(1< > with a return of Apache2::Const:ECLINED in either case in my handler.
>
> Neither ends up modifying the supported options sent to the client.
>
> In tha handler if I print the return value of $r->allowed:
> print $r->allowed(1< > print $r->allowed() . "\n";
> return Apache2::Const:ECLINED;
>
> I get:
> 1
> 2
>
> So the record is being updated, but for some reason Apache is not
> basing its response to the client off of the record.
>
> Can anyone provide any insight into why I am unable to modify the list
> of request methods my handler is capable of servicing?


the Allow header appears to be built not from r->allowed but
r->allowed_methods->method_mask. so, try this:

http://perl.apache.org/docs/2.0/api/...allow_methods_

HTH

--Geoff