Merge pull request #1238 from tw4452852/1234

proxy: make sure value is optional when removing a header
This commit is contained in:
Matt Holt 2016-11-03 12:13:39 -06:00 committed by GitHub
commit e19a007b38
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":