proxy: make value is optional when removing a header

fix issue #1234

Signed-off-by: Tw <tw19881113@gmail.com>
This commit is contained in:
Tw 2016-11-03 22:50:51 +00:00
parent b89cbe18e2
commit e85ba0d4db
2 changed files with 24 additions and 2 deletions

View file

@ -131,6 +131,22 @@ func TestSetup(t *testing.T) {
"http://localhost:8005/a--b": {},
},
},
// test #12 test value is optional when remove upstream header
{
"proxy / localhost:1984 {\n header_upstream -server \n}",
false,
map[string]struct{}{
"http://localhost:1984": {},
},
},
// test #13 test value is optional when remove downstream header
{
"proxy / localhost:1984 {\n header_downstream -server \n}",
false,
map[string]struct{}{
"http://localhost:1984": {},
},
},
} {
c := caddy.NewTestController("http", test.input)
err := setup(c)

View file

@ -305,13 +305,19 @@ func parseBlock(c *caddyfile.Dispenser, u *staticUpstream) error {
case "header_upstream":
var header, value string
if !c.Args(&header, &value) {
return c.ArgErr()
// When removing a header, the value can be optional.
if !strings.HasPrefix(header, "-") {
return c.ArgErr()
}
}
u.upstreamHeaders.Add(header, value)
case "header_downstream":
var header, value string
if !c.Args(&header, &value) {
return c.ArgErr()
// When removing a header, the value can be optional.
if !strings.HasPrefix(header, "-") {
return c.ArgErr()
}
}
u.downstreamHeaders.Add(header, value)
case "transparent":