[ 
https://issues.apache.org/jira/browse/TS-2366?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Susan Hinrichs updated TS-2366:
-------------------------------
    Fix Version/s:     (was: 5.2.0)
                   6.0.0

> 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
>    Affects Versions: 4.0.1, 4.0.2
>            Reporter: Ron Barber
>             Fix For: 6.0.0
>
>
> 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.3.4#6332)

Reply via email to