Apache LimitExcept retornando o erro 400 no método permitido

Apache LimitExcept retornando o erro 400 no método permitido

Eu tenho a seguinte diretiva no meu Apache httpd.conf:

<LimitExcept OPTIONS PROPFIND REPORT>
   deny from all
</LimitExcept>

OPTIONSe PROPFINDfunciona como esperado, mas REPORTretorna 400: Bad Request. Remova LimitExcepttudo e tudo funcionará conforme o esperado.

Alguma idéia de por que isso pode acontecer?

(Por favor, vejaminha pergunta aquipara ver o que estou tentando fazer).

O log de acesso mostra:

192.168.161.1 - - [21/Jun/2010:08:42:26 +1000] "REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1" 400 101

O log de erros mostra:

[Mon Jun 21 08:42:26 2010] [error] [client 192.168.161.1] client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs

Atualizar

Ok, uma inspeção rápida revela que com ou sem o <LimitExcept>URL REPORTpermanece o mesmo. Esta é a aparência do log sem <LimitExcept>(todo o resto na configuração permaneceu igual):

192.168.161.1 - - [22/Jun/2010:21:03:42 +1000] "REPORT /logs/MV101Apps/!svn/bc/7821/MyApp/MyApps.edp HTTP/1.1" 200 115

(observe que esse URL é um URL do Subversion gerado pelo comando svn log- não sou eu quem está adicionando o !svnURL)

O VirutalHost completo /logs/é assim:

<Location /logs/>
   DAV svn
   SVNParentPath C:\SVN
   <LimitExcept OPTIONS PROPFIND REPORT>
       deny from all
   </LimitExcept>
</Location>

Responder1

Esta é a aparência do mod_dav.c mais recente em 2.2.15 (editado por questões de brevidade):

static int dav_method_report(request_rec *r)
{
  int result;
  apr_xml_doc *doc;

  if ((result = ap_xml_parse_input(r, &doc)) != OK)
    return result;
  if (doc == NULL) {
    return HTTP_BAD_REQUEST;
  }

Então, meu instinto é que ap_xml_parse_input(r, &doc)) está saindo doc=NULL; com base em não ser capaz de acessar aquele nome de documento questionável (ele tem um! nele??) e cuspindo de volta um 400:

"REPORT /logs/MV101Apps/!svn/bc/7699/MyApp/MyApps.edp HTTP/1.1"

...

client denied by server configuration: C:/Program Files/CollabNet/Subversion Server/httpd/htdocs/logs

... parece que o problema está em como o /logs/ virtual do access_log é mapeado para este diretório em error_log e se há controles de acesso adequados para permitir que os recursos sejam lidos no local. Precisamos ver todas as informações de configuração a seguir.

informação relacionada