aboutsummaryrefslogtreecommitdiff
path: root/middleware/file/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/file/setup.go')
-rw-r--r--middleware/file/setup.go10
1 files changed, 7 insertions, 3 deletions
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] != "*" {