From: Nick Kew Date: Tue, 14 Aug 2007 09:22:15 +0000 (+0000) Subject: mod_negotiation: preserve Query String in resolving a type map X-Git-Tag: 2.3.0~1609 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57104f62f05cdefda4e4a0650a3e7886c7a37b37;p=thirdparty%2Fapache%2Fhttpd.git mod_negotiation: preserve Query String in resolving a type map PR 33112. Report with patch by Jørgen Thomsen. Attention called to it by Per Jessen. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@565671 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 46f56a1915f..e17c0db92fb 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.3.0 + *) mod_negotiation: preserve Query String in resolving a type map + PR 33112 [Jørgen Thomsen , Nick Kew] + *) mod_deflate: fix content_encoding detection in inflate_out filter when it's not in response headers table. PR 42993 [Nick Kew] diff --git a/modules/mappers/mod_negotiation.c b/modules/mappers/mod_negotiation.c index 3759278b75f..3a89dc3f9c1 100644 --- a/modules/mappers/mod_negotiation.c +++ b/modules/mappers/mod_negotiation.c @@ -2971,6 +2971,7 @@ static int handle_map_file(request_rec *r) var_rec *best; int res; char *udir; + const char *new_req; if(strcmp(r->handler,MAP_FILE_MAGIC_TYPE) && strcmp(r->handler,"type-map")) return DECLINED; @@ -3061,8 +3062,21 @@ static int handle_map_file(request_rec *r) } udir = ap_make_dirstr_parent(r->pool, r->uri); udir = ap_escape_uri(r->pool, udir); - ap_internal_redirect(apr_pstrcat(r->pool, udir, best->file_name, - r->path_info, NULL), r); + if (r->args) { + if (r->path_info) { + new_req = apr_pstrcat(r->pool, udir, best->file_name, + r->path_info, "?", r->args, NULL); + } + else { + new_req = apr_pstrcat(r->pool, udir, best->file_name, + "?", r->args, NULL); + } + } + else { + new_req = apr_pstrcat(r->pool, udir, best->file_name, + r->path_info, NULL); + } + ap_internal_redirect(new_req, r); return OK; }