You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Ron Barber (JIRA)" <ji...@apache.org> on 2013/11/18 19:23:22 UTC
[jira] [Created] (TS-2366) Default remap occurs if first remap
plugin does NOT remap
Ron Barber created TS-2366:
------------------------------
Summary: Default remap occurs if first remap plugin does NOT remap
Key: TS-2366
URL: https://issues.apache.org/jira/browse/TS-2366
Project: Traffic Server
Issue Type: Bug
Components: Core
Reporter: Ron Barber
When you have multiple remap plugins, if the first remap plugin does NOT return that it remapped, then the core 'forces' the default remapping to occur. If the subsequent plugin parses the client request it will see the default remapped value rather than the client's original request.
To duplicate:
FILE remap.config:
map http://a.com/ http://b.com/b/ @plugin=conf_remap.so @pparam=pristine_host_hdr_disabled.config @plugin=regex_remap.so @pparam=regex.map
FILE pristine_host_hdr_disabled.config:
CONFIG proxy.config.url_remap.pristine_host_hdr INT 0
FILE regex.map:
^/?$ http://c.com/c/index.html
Request:
curl -IH 'Host: a.com' http://127.0.0.1:8080/
Result:
The request will be mapped to b.com when it should be mapped to c.com. If you reverse the order of the remap plugins (have regex_remap run first) then it works.
The code below is the issue...the XXX comment is the correct solution which needs to be implemented:
>From RemapPlugins.cc
if (TSREMAP_NO_REMAP == plugin_retcode || TSREMAP_NO_REMAP_STOP == plugin_retcode) {
// After running the first plugin, rewrite the request URL. This is doing the default rewrite rule
// to handle the case where no plugin ever rewrites.
//
// XXX we could probably optimize this a bit more by keeping a flag and only rewriting the request URL
// if no plugin has rewritten it already.
if (_cur == 1) {
Debug("url_rewrite", "plugin did not change host, port or path, copying from mapping rule");
url_rewrite_remap_request(_s->url_map, _request_url);
}
}
--
This message was sent by Atlassian JIRA
(v6.1#6144)