mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04:00 
			
		
		
		
	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 <miek@miek.nl>
This commit is contained in:
		| @@ -69,7 +69,10 @@ func (f File) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (i | |||||||
| 		return dns.RcodeSuccess, nil | 		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) | 		log.Errorf("Zone %s is expired", zone) | ||||||
| 		return dns.RcodeServerFailure, nil | 		return dns.RcodeServerFailure, nil | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -22,13 +22,13 @@ type Zone struct { | |||||||
| 	file    string | 	file    string | ||||||
| 	*tree.Tree | 	*tree.Tree | ||||||
| 	Apex | 	Apex | ||||||
|  | 	Expired *bool | ||||||
|  |  | ||||||
| 	sync.RWMutex | 	sync.RWMutex | ||||||
|  |  | ||||||
| 	TransferTo   []string | 	TransferTo   []string | ||||||
| 	StartupOnce  sync.Once | 	StartupOnce  sync.Once | ||||||
| 	TransferFrom []string | 	TransferFrom []string | ||||||
| 	Expired      *bool |  | ||||||
|  |  | ||||||
| 	ReloadInterval time.Duration | 	ReloadInterval time.Duration | ||||||
| 	reloadShutdown chan bool | 	reloadShutdown chan bool | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user