From cc486fb900c20fce761993c102763449d14a1188 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 2 Oct 2016 19:41:00 +0100 Subject: middleware/file: transfer from does not make sense (#314) Make it return an error when you use `transfer from` when you're not a secondary. Add tests as well. Fixes #310 --- middleware/file/setup.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'middleware/file/setup.go') diff --git a/middleware/file/setup.go b/middleware/file/setup.go index 114b370f5..dd1f17d9a 100644 --- a/middleware/file/setup.go +++ b/middleware/file/setup.go @@ -83,7 +83,7 @@ func fileParse(c *caddy.Controller) (Zones, error) { noReload := false for c.NextBlock() { - t, _, e := TransferParse(c) + t, _, e := TransferParse(c, false) if e != nil { return Zones{}, e } @@ -105,8 +105,9 @@ func fileParse(c *caddy.Controller) (Zones, error) { } // TransferParse parses transfer statements: 'transfer to [address...]'. -// Exported so secondary can use this as well. -func TransferParse(c *caddy.Controller) (tos, froms []string, err error) { +// Exported so secondary can use this as well. For the `file` middleware transfer from does +// not make sense; make this an error. +func TransferParse(c *caddy.Controller, secondary bool) (tos, froms []string, err error) { what := c.Val() if !c.NextArg() { return nil, nil, c.ArgErr() @@ -126,6 +127,9 @@ func TransferParse(c *caddy.Controller) (tos, froms []string, err error) { } } if value == "from" { + if !secondary { + return nil, nil, fmt.Errorf("can't use `transfer from` when not being a seconary") + } froms = c.RemainingArgs() for i := range froms { if froms[i] != "*" { -- cgit v1.2.3