Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnishevent3
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
varnishevent3
Commits
57ff1484
Commit
57ff1484
authored
May 18, 2011
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove the hybrid VCL ban() syntax, it was only confusing everybody.
parent
496a4d6d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
5 additions
and
90 deletions
+5
-90
c00022.vtc
bin/varnishtest/tests/c00022.vtc
+1
-21
vcc_action.c
lib/libvcl/vcc_action.c
+4
-69
No files found.
bin/varnishtest/tests/c00022.vtc
View file @
57ff1484
...
...
@@ -21,7 +21,7 @@ server s1 {
varnish v1 -vcl+backend {
sub vcl_recv {
if (req.request == "PURGE") {
ban (
req.url ==
req.url);
ban (
"req.url == " +
req.url);
error 410;
}
if (req.request == "PURGESTR") {
...
...
@@ -31,26 +31,6 @@ varnish v1 -vcl+backend {
}
} -start
# Trigger syntax check
varnish v1 -badvcl {
backend foo {
.host = "127.0.0.1";
}
sub vcl_recv {
ban (req.foo == req.url);
}
}
# Trigger syntax check
varnish v1 -badvcl {
backend foo {
.host = "127.0.0.1";
}
sub vcl_recv {
ban (req.http. == req.url);
}
}
# Fetch into cache
client c1 {
txreq -url "/foo"
...
...
lib/libvcl/vcc_action.c
View file @
57ff1484
...
...
@@ -176,84 +176,19 @@ parse_unset(struct vcc *tl)
/*--------------------------------------------------------------------*/
static
const
struct
ban_var
{
const
char
*
name
;
unsigned
flag
;
}
ban_var
[]
=
{
#define PVAR(a, b, c) { (a), (b) },
#include "ban_vars.h"
#undef PVAR
{
0
,
0
}
};
static
void
parse_ban
(
struct
vcc
*
tl
)
{
const
struct
ban_var
*
pv
;
vcc_NextToken
(
tl
);
ExpectErr
(
tl
,
'('
);
vcc_NextToken
(
tl
);
if
(
tl
->
t
->
tok
==
ID
)
{
Fb
(
tl
,
1
,
"VRT_ban(sp,
\n
"
);
tl
->
indent
+=
INDENT
;
while
(
1
)
{
ExpectErr
(
tl
,
ID
);
/* Check valididity of ban variable */
for
(
pv
=
ban_var
;
pv
->
name
!=
NULL
;
pv
++
)
{
if
(
!
strncmp
(
pv
->
name
,
tl
->
t
->
b
,
strlen
(
pv
->
name
)))
break
;
}
if
(
pv
->
name
==
NULL
)
{
vsb_printf
(
tl
->
sb
,
"Unknown ban variable."
);
vcc_ErrWhere
(
tl
,
tl
->
t
);
return
;
}
if
((
pv
->
flag
&
PVAR_HTTP
)
&&
tl
->
t
->
b
+
strlen
(
pv
->
name
)
>=
tl
->
t
->
e
)
{
vsb_printf
(
tl
->
sb
,
"Missing header name."
);
vcc_ErrWhere
(
tl
,
tl
->
t
);
return
;
}
Fb
(
tl
,
1
,
"
\"
%.*s
\"
,
\n
"
,
PF
(
tl
->
t
));
vcc_NextToken
(
tl
);
switch
(
tl
->
t
->
tok
)
{
case
'~'
:
case
T_NOMATCH
:
case
T_EQ
:
case
T_NEQ
:
Fb
(
tl
,
1
,
"
\"
%.*s
\"
,
\n
"
,
PF
(
tl
->
t
));
break
;
default:
vsb_printf
(
tl
->
sb
,
"Expected ~, !~, == or !=.
\n
"
);
vcc_ErrWhere
(
tl
,
tl
->
t
);
return
;
}
vcc_NextToken
(
tl
);
Fb
(
tl
,
1
,
" "
);
vcc_Expr
(
tl
,
STRING
);
ERRCHK
(
tl
);
Fb
(
tl
,
0
,
",
\n
"
);
if
(
tl
->
t
->
tok
==
')'
)
break
;
ExpectErr
(
tl
,
T_CAND
);
Fb
(
tl
,
1
,
"
\"
%.*s
\"
,
\n
"
,
PF
(
tl
->
t
));
vcc_NextToken
(
tl
);
}
Fb
(
tl
,
1
,
"0);
\n
"
);
tl
->
indent
-=
INDENT
;
}
else
{
Fb
(
tl
,
1
,
"VRT_ban_string(sp, "
);
vcc_Expr
(
tl
,
STRING
);
ERRCHK
(
tl
);
Fb
(
tl
,
0
,
");
\n
"
);
}
Fb
(
tl
,
1
,
"VRT_ban_string(sp, "
);
vcc_Expr
(
tl
,
STRING
);
ERRCHK
(
tl
);
Fb
(
tl
,
0
,
");
\n
"
);
ExpectErr
(
tl
,
')'
);
vcc_NextToken
(
tl
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment