aboutsummaryrefslogtreecommitdiff
path: root/plugin/cache/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/cache/setup.go')
-rw-r--r--plugin/cache/setup.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/plugin/cache/setup.go b/plugin/cache/setup.go
index e5258dc06..aa487105c 100644
--- a/plugin/cache/setup.go
+++ b/plugin/cache/setup.go
@@ -188,6 +188,23 @@ func cacheParse(c *caddy.Controller) (*Cache, error) {
}
ca.verifyStale = mode == "verify"
}
+ case "servfail":
+ args := c.RemainingArgs()
+ if len(args) != 1 {
+ return nil, c.ArgErr()
+ }
+ d, err := time.ParseDuration(args[0])
+ if err != nil {
+ return nil, err
+ }
+ if d < 0 {
+ return nil, errors.New("invalid negative ttl for servfail")
+ }
+ if d > 5*time.Minute {
+ // RFC 2308 prohibits caching SERVFAIL longer than 5 minutes
+ return nil, errors.New("caching SERVFAIL responses over 5 minutes is not permitted")
+ }
+ ca.failttl = d
default:
return nil, c.ArgErr()
}