Randall Meyer created TS-4993:
---------------------------------
Summary: backslash/escape removed from header_rewrite rule when
unquoted
Key: TS-4993
URL: https://issues.apache.org/jira/browse/TS-4993
Project: Traffic Server
Issue Type: Bug
Components: Plugins
Reporter: Randall Meyer
Loading up a configuration with a header_rewrite rule of:
{noformat}
cond %{READ_RESPONSE_HDR_HOOK} [AND]
cond %{PATH} /(\.html|\.js|\.png)(?:\?(.*))*$/ [AND]
cond %{STATUS} >199 [AND]
cond %{STATUS} <300
set-header Cache-Control "max-age=31536000, public
{noformat}
results in an call to abort() in matcher.h under ATS 7.0.0. This worked fine
under ATS 6.x (and probably 5.3.x)
{noformat}
(gdb) where
#0 0x00007ffff4f64625 in *__GI_raise (sig=<optimized out>) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff4f65e05 in *__GI_abort () at abort.c:92
#2 0x00007fffe71dd3ff in Matchers<std::string>::setRegex
(this=this@entry=0x7fffe5ac0f80) at matcher.h:98
#3 0x00007fffe71d7baa in Matchers<std::string>::set (d=...,
this=0x7fffe5ac0f80) at matcher.h:119
#4 ConditionPath::initialize (this=0x7fffe59a6d00, p=...) at conditions.cc:260
{noformat}
The string comes to matcher with the escapes removed:
{noformat}
Adding condition: %{PATH} with arg: /(.html|.js|.png)(?:?(.*))*$/
{noformat}
If I add quotes around the regex, this regex is passed through correctly
escaped.
Not sure if this is expected behavior or not.
This also seems related to TS-4797 and TS-4940.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)