Actually there is a problem that URL is only overwritten in first plugin in 
current logic. That means the request_url is overwritten in first plugin(which 
return NO_REMAP ) and never changed even if the remain plugin set map_to or 
map_form, except you set request_url directly.  If my understanding  is 
correctly.

scw00 - Song Chenwei

> 在 2018年12月2日,上午11:26,Bret Palsson <bre...@gmail.com> 写道:
> 
> I don’t normally comment, but feel like I need to chime in here.
> 
> I agree in keeping with the stack behavior. This change has the potential to 
> break a lot of plugin logic and will cause a lot of work across many dev 
> teams that maintain many plugins. The pristine URL should be used in 
> subsequent plugins as needed. 
> 
> Having said that, I am also interested to know and understand the cause for 
> wanting this behavior.
> 
> -Bret
> 
>> On Dec 1, 2018, at 20:15, Yongming Zhao <ming....@gmail.com> wrote:
>> 
>> I’d like to take a little step back ask about what is the root causing about 
>> this change:
>> 
>> in the origin design
>> 1, the remap plugin works in ordered, which means you can stop(consider it 
>> done) remapping at any plugin if you want, and the following plugins will 
>> not run after.
>> 2, the remap plugin works in stacks, which means the seconds plugin will 
>> continue work on the URL which is rewritten in the first plugin.
>> 
>> when you talking about the origin URL, there is always a pristine URL you 
>> can copy, if you really want, so the second plugin can see the origin 
>> un-mapped URL. this pristine URL is design for logging, but I think you can 
>> take it for your purpose if you like
>> 
>> 
>> so, here rise my question:
>> can the pristine URL full file your second plugin needs? if so, can we keep 
>> the origin design?
>> 
>> 
>> - Yongming Zhao 赵永明
>> 
>>> 在 2018年11月5日,上午11:06,Takuya Kitano <tkit...@yahoo-corp.jp> 写道:
>>> 
>>> Hi,
>>> 
>>> I’d like to propose a change about the timing that ATS runs remap plugins.
>>> 
>>> Currently, we configure remap.config like the following snippet,
>>> and each plugins use `rri->requestUrl`,
>>> the behavior of a remap plugin as the first plugin is different from that 
>>> as the second plugin.
>>> 
>>> ```
>>> map http://before-remap.com/ http://after-remap.com/ @plugin=<first 
>>> plugin>.so @pparam=... @plugin=<second plugin>.so @pparam=...
>>> ```
>>> 
>>> In detail, the first plugin get pre-remapped url information from 
>>> `rri->requestUrl`,
>>> but the second plugin get post-remapped one.
>>> 
>>> The cause of this behavior is ATS executes `url_rewrite_remap_request` 
>>> function after running the first remap plugin.
>>> 
>>> My proposal is that ATS should execute all remap plugins and then rewrite 
>>> url.
>>> 
>>> More ditails are in
>>> - Issue : https://github.com/apache/trafficserver/issues/2877
>>> - Pull Request : https://github.com/apache/trafficserver/pull/4531
>>> 
>>> 
>>> What do you think about this?
>>> 
>>> Thank you.
>>> 
>> 
> 
> .



Reply via email to