Hi,

I have just stumbled across this function in Apache2::RequestUtil. The
"# if 0" is mine.

Does anybody recall WHY the lines between "# if 0" and "# endif" were put in 
in the first place?

I have checked the SVN. They were already present in the very first version of 
the file.

static MP_INLINE
int mpxs_Apache2__RequestRec_location_merge(request_rec *r,
                                           char *location)
{
    apr_pool_t *p = r->pool;
    server_rec *s = r->server;
    core_server_config *sconf = ap_get_module_config(s->module_config,
                                                     &core_module);
    ap_conf_vector_t **sec = (ap_conf_vector_t **)sconf->sec_url->elts;
    int num_sec = sconf->sec_url->nelts;
    int i;

    for (i=0; i<num_sec; i++) {
        core_dir_config *entry =
            (core_dir_config *)ap_get_module_config(sec[i],
                                                    &core_module);

        if (strEQ(entry->d, location)) {
# if 0
            if (!entry->ap_auth_type) {
                entry->ap_auth_type = "Basic";
            }
            if (!entry->ap_auth_name) {
                entry->ap_auth_name = apr_pstrdup(p, location);
            }
# endif
            r->per_dir_config =
                ap_merge_per_dir_configs(p, s->lookup_defaults, sec[i]);
            return 1;
        }
    }

    return 0;
}

The relevant test is t/protocol/pseudo_http.t and it's module 
t/protocol/TestProtocol/pseudo_http.pm. The module contains the following 
config:

<VirtualHost TestProtocol::pseudo_http>

  PerlProcessConnectionHandler TestProtocol::pseudo_http

  <Location TestProtocol::pseudo_http>

      <IfModule @ACCESS_MODULE@>
          Order Deny,Allow
          Allow from @servername@
      </IfModule>

      <IfModule @AUTH_MODULE@>
          # htpasswd -mbc basic-auth stas foobar
          # using md5 password so it'll work on win32 too
          AuthUserFile @ServerRoot@/htdocs/protocols/basic-auth
      </IfModule>

#      AuthName TestProtocol::pseudo_http
#      AuthType Basic
      Require user stas
      Satisfy any

  </Location>

</VirtualHost>

Again, the commented out lines (AuthName, AuthType) are mine.

When both sets of lines are inactive the test fails. But I strongly believe 
that AuthName and AuthType if they are needed here should be configured in the 
Location container and not be hardcoded, even as default values.

I'll remove the lines:

            if (!entry->ap_auth_type) {
                entry->ap_auth_type = "Basic";
            }
            if (!entry->ap_auth_name) {
                entry->ap_auth_name = apr_pstrdup(p, location);
            }

if nobody vetoes.

Torsten Förtsch

-- 
Need professional modperl support? Hire me! (http://foertsch.name)

Like fantasy? http://kabatinte.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to