From 92a636df53c16047a7523d499811ac0df41edaf3 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sat, 27 Jul 2019 15:06:50 +0000 Subject: [PATCH] plugin/file: z.Expired needs be read under a rlock (#3056) Read lock before reading the Expired field of a zone. Fixes: #3053 Signed-off-by: Miek Gieben --- plugin/file/file.go | 5 ++++- plugin/file/zone.go | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/plugin/file/file.go b/plugin/file/file.go index c63fa43f5..8e10499fa 100644 --- a/plugin/file/file.go +++ b/plugin/file/file.go @@ -69,7 +69,10 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i return dns.RcodeSuccess, nil } - if z.Expired != nil && *z.Expired { + z.RLock() + exp := z.Expired + z.RUnlock() + if exp != nil && *exp { log.Errorf("Zone %s is expired", zone) return dns.RcodeServerFailure, nil } diff --git a/plugin/file/zone.go b/plugin/file/zone.go index 1fcfc5d33..d3adca29e 100644 --- a/plugin/file/zone.go +++ b/plugin/file/zone.go @@ -22,13 +22,13 @@ type Zone struct { file string *tree.Tree Apex + Expired *bool sync.RWMutex TransferTo []string StartupOnce sync.Once TransferFrom []string - Expired *bool ReloadInterval time.Duration reloadShutdown chan bool