httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: svn commit: r962989 - in /httpd/httpd/branches/2.2.x: CHANGES STATUS docs/manual/mod/mod_dir.xml modules/mappers/mod_dir.c
Date Sun, 11 Jul 2010 13:49:40 GMT


On 07/11/2010 07:58 AM, niq@apache.org wrote:
> Author: niq
> Date: Sun Jul 11 05:58:13 2010
> New Revision: 962989
> 
> URL: http://svn.apache.org/viewvc?rev=962989&view=rev
> Log:
> Backport FallbackResource directive.
> 
> Modified:
>     httpd/httpd/branches/2.2.x/CHANGES
>     httpd/httpd/branches/2.2.x/STATUS
>     httpd/httpd/branches/2.2.x/docs/manual/mod/mod_dir.xml
>     httpd/httpd/branches/2.2.x/modules/mappers/mod_dir.c
> 
> @@ -90,9 +94,53 @@ static void *merge_dir_configs(apr_pool_
>      new->index_names = add->index_names ? add->index_names : base->index_names;
>      new->do_slash =
>          (add->do_slash == SLASH_UNSET) ? base->do_slash : add->do_slash;
> +    new->dflt = add->dflt ? add->dflt : base->dflt;
>      return new;
>  }
>  
> +static int fixup_dflt(request_rec *r)
> +{
> +    dir_config_rec *d = ap_get_module_config(r->per_dir_config, &dir_module);
> +    const char *name_ptr;
> +    request_rec *rr;
> +    int error_notfound = 0;
> +    if ((r->finfo.filetype != APR_NOFILE) || (r->handler != NULL)) {
> +        return DECLINED;
> +    }
> +    name_ptr = d->dflt;

What happens if d->dflt is NULL?

> +    if (r->args != NULL) {
> +        name_ptr = apr_pstrcat(r->pool, name_ptr, "?", r->args, NULL);
> +    }
> +    rr = ap_sub_req_lookup_uri(name_ptr, r, r->output_filters);
> +    if (rr->status == HTTP_OK
> +        && (   (rr->handler && !strcmp(rr->handler, "proxy-server"))
> +            || rr->finfo.filetype == APR_REG)) {
> +        ap_internal_fast_redirect(rr, r);
> +        return OK;
> +    }
> +    else if (ap_is_HTTP_REDIRECT(rr->status)) {
> +
> +        apr_pool_join(r->pool, rr->pool);
> +        r->notes = apr_table_overlay(r->pool, r->notes, rr->notes);
> +        r->headers_out = apr_table_overlay(r->pool, r->headers_out,
> +                                           rr->headers_out);
> +        r->err_headers_out = apr_table_overlay(r->pool, r->err_headers_out,
> +                                               rr->err_headers_out);
> +        error_notfound = rr->status;
> +    }
> +    else if (rr->status && rr->status != HTTP_NOT_FOUND
> +             && rr->status != HTTP_OK) {
> +        error_notfound = rr->status;
> +    }
> +
> +    ap_destroy_sub_req(rr);
> +    if (error_notfound) {
> +        return error_notfound;
> +    }
> +
> +    /* nothing for us to do, pass on through */
> +    return DECLINED;
> +}
>  static int fixup_dir(request_rec *r)
>  {
>      dir_config_rec *d;


Regards

RĂ¼diger

Mime
View raw message