Error compiling VCL when using '% in regexp
Poul-Henning Kamp
phk at phk.freebsd.dk
Wed Feb 10 11:10:14 CET 2010
In message <DD929CD9109B0A4D8C34B732A6D35CC43C403167 at MBX03.exg5.exghost.com>, N
aama Bamberger writes:
>I already tried using the escaped %25.
>The compilation succeeded, but the regexp didn't find a match in the problematic URLs:
>
> # If the URL ends with % and one digit (a broken hex value) - remove the last 2 characters.
> if (req.url ~ "(.*)%25[0-9a-fA-F]$") {
> set req.url = regsub(req.url, "(.*)%25[0-9a-fA-F]$", "\1");
> }
I just whipped up a varnishtest case, and it seems to work in -trunk:
test "random test"
server s1 {
rxreq
expect req.url == "/foo"
txresp
} -start
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.url ~ "(.*)%25[0-9a-fA-F]$") {
set req.url = regsub(req.url, "(.*)%25[0-9a-fA-F]$", "\1");
}
}
} -start
client c1 {
txreq -url /foo%a
rxresp
} -run
### c1 Connect to 127.0.0.1:17621
### c1 Connected to 127.0.0.1:17621 fd is 9
#### c1 txreq| GET /foo%a HTTP/1.1\r\n
#### c1 txreq| \r\n
### c1 rxresp
### s1 Accepted socket fd is 4
### s1 rxreq
#### s1 rxhdr| GET /foo HTTP/1.1\r\n
#### s1 rxhdr| X-Forwarded-For: 127.0.0.1\r\n
#### s1 rxhdr| X-Varnish: 1001\r\n
#### s1 rxhdr| Host: 127.0.0.1\r\n
#### s1 rxhdr| \r\n
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the varnish-misc
mailing list