1 --- httpd-2.4.1/modules/mappers/mod_vhost_alias.c.orig 2011-06-05 23:33:12.000000000 +0200
2 +++ httpd-2.4.1/modules/mappers/mod_vhost_alias.c 2012-02-22 00:31:43.952644535 +0100
4 * both written by James Grinter <jrg@blodwen.demon.co.uk>.
10 #include "apr_strings.h"
14 mva_mode_e doc_root_mode;
15 mva_mode_e cgi_root_mode;
19 static void *mva_create_server_config(apr_pool_t *p, server_rec *s)
21 conf->cgi_root = NULL;
22 conf->doc_root_mode = VHOST_ALIAS_UNSET;
23 conf->cgi_root_mode = VHOST_ALIAS_UNSET;
24 + conf->set_doc_root = 0;
29 conf->cgi_root_mode = child->cgi_root_mode;
30 conf->cgi_root = child->cgi_root;
33 + conf->set_doc_root = child->set_doc_root;
42 +static const char *vhost_set_docroot(cmd_parms *cmd, void *dummy,
46 + conf = (mva_sconf_t *) ap_get_module_config(cmd->server->module_config,
47 + &vhost_alias_module);
48 + conf->set_doc_root = (strcasecmp(str, "yes") == 0 ||
49 + strcasecmp(str, "on") == 0) ? 1 : 0;
53 static const command_rec mva_commands[] =
55 AP_INIT_TAKE1("VirtualScriptAlias", vhost_alias_set,
57 AP_INIT_TAKE1("VirtualDocumentRootIP", vhost_alias_set,
58 &vhost_alias_set_doc_root_ip, RSRC_CONF,
59 "how to create the DocumentRoot based on the host"),
60 + AP_INIT_TAKE1("SetVirtualDocumentRoot", vhost_set_docroot,
62 + "set DOCUMENT_ROOT to parsed document root"),
70 -static void vhost_alias_interpolate(request_rec *r, const char *name,
71 - const char *map, const char *uri)
72 +static void vhost_alias_interpolate(request_rec *r, mva_sconf_t *conf,
73 + const char *name, const char *map,
77 enum { MAXDOTS = 19 };
79 r->filename = apr_pstrcat(r->pool, docroot, uri, NULL);
80 ap_set_context_info(r, NULL, docroot);
81 ap_set_document_root(r, docroot);
82 + if (conf->set_doc_root) {
83 + request_rec *top = (r->main)?r->main:r;
84 + core_server_config *core = (core_server_config *) ap_get_module_config(r->server->module_config, &core_module);
86 + core->ap_document_root = apr_pstrdup(top->pool, buf);
90 static int mva_translate(request_rec *r)
92 * canonical_path buffer.
94 r->canonical_filename = "";
95 - vhost_alias_interpolate(r, name, map, uri);
96 + vhost_alias_interpolate(r, conf, name, map, uri);
99 /* see is_scriptaliased() in mod_cgi */