diff options
author | 2016-03-18 20:57:35 +0000 | |
---|---|---|
committer | 2016-03-18 20:57:35 +0000 | |
commit | 3ec0d9fe6b133a64712ae69fd712c14ad1a71f4d (patch) | |
tree | fae74c33cfed05de603785294593275f1901c861 /server/zones.go | |
download | coredns-3ec0d9fe6b133a64712ae69fd712c14ad1a71f4d.tar.gz coredns-3ec0d9fe6b133a64712ae69fd712c14ad1a71f4d.tar.zst coredns-3ec0d9fe6b133a64712ae69fd712c14ad1a71f4d.zip |
First commit
Diffstat (limited to 'server/zones.go')
-rw-r--r-- | server/zones.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/server/zones.go b/server/zones.go new file mode 100644 index 000000000..6a5a7a938 --- /dev/null +++ b/server/zones.go @@ -0,0 +1,28 @@ +package server + +import "github.com/miekg/coredns/middleware" + +// zone represents a DNS zone. While a Server +// is what actually binds to the address, a user may want to serve +// multiple zones on a single address, and this is what a +// zone allows us to do. +type zone struct { + config Config + stack middleware.Handler +} + +// buildStack builds the server's middleware stack based +// on its config. This method should be called last before +// ListenAndServe begins. +func (z *zone) buildStack() error { + z.compile(z.config.Middleware) + return nil +} + +// compile is an elegant alternative to nesting middleware function +// calls like handler1(handler2(handler3(finalHandler))). +func (z *zone) compile(layers []middleware.Middleware) { + for i := len(layers) - 1; i >= 0; i-- { + z.stack = layers[i](z.stack) + } +} |