From 8521635f63e9570a4e75033533dec8180e7f130a Mon Sep 17 00:00:00 2001
From: Simon Zolin <s.zolin@adguard.com>
Date: Tue, 17 Dec 2019 13:09:03 +0300
Subject: [PATCH] - DNS: fix slow response to /status and /access/list requests

---
 dnsforward/access.go     | 4 ++--
 dnsforward/dnsforward.go | 4 ++--
 go.mod                   | 2 +-
 go.sum                   | 4 ++--
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dnsforward/access.go b/dnsforward/access.go
index e27ddb1f..6868c6d7 100644
--- a/dnsforward/access.go
+++ b/dnsforward/access.go
@@ -119,13 +119,13 @@ type accessListJSON struct {
 }
 
 func (s *Server) handleAccessList(w http.ResponseWriter, r *http.Request) {
-	s.Lock()
+	s.RLock()
 	j := accessListJSON{
 		AllowedClients:    s.conf.AllowedClients,
 		DisallowedClients: s.conf.DisallowedClients,
 		BlockedHosts:      s.conf.BlockedHosts,
 	}
-	s.Unlock()
+	s.RUnlock()
 
 	w.Header().Set("Content-Type", "application/json")
 	err := json.NewEncoder(w).Encode(j)
diff --git a/dnsforward/dnsforward.go b/dnsforward/dnsforward.go
index beacbabf..c3c05ad7 100644
--- a/dnsforward/dnsforward.go
+++ b/dnsforward/dnsforward.go
@@ -94,7 +94,7 @@ func stringArrayDup(a []string) []string {
 
 // WriteDiskConfig - write configuration
 func (s *Server) WriteDiskConfig(c *FilteringConfig) {
-	s.Lock()
+	s.RLock()
 	sc := s.conf.FilteringConfig
 	*c = sc
 	c.RatelimitWhitelist = stringArrayDup(sc.RatelimitWhitelist)
@@ -103,7 +103,7 @@ func (s *Server) WriteDiskConfig(c *FilteringConfig) {
 	c.DisallowedClients = stringArrayDup(sc.DisallowedClients)
 	c.BlockedHosts = stringArrayDup(sc.BlockedHosts)
 	c.UpstreamDNS = stringArrayDup(sc.UpstreamDNS)
-	s.Unlock()
+	s.RUnlock()
 }
 
 // FilteringConfig represents the DNS filtering configuration of AdGuard Home
diff --git a/go.mod b/go.mod
index 1e6f708d..67fc7d0c 100644
--- a/go.mod
+++ b/go.mod
@@ -3,7 +3,7 @@ module github.com/AdguardTeam/AdGuardHome
 go 1.13
 
 require (
-	github.com/AdguardTeam/dnsproxy v0.23.2
+	github.com/AdguardTeam/dnsproxy v0.23.3
 	github.com/AdguardTeam/golibs v0.3.0
 	github.com/AdguardTeam/urlfilter v0.7.0
 	github.com/NYTimes/gziphandler v1.1.1
diff --git a/go.sum b/go.sum
index af55f042..3945fdff 100644
--- a/go.sum
+++ b/go.sum
@@ -1,5 +1,5 @@
-github.com/AdguardTeam/dnsproxy v0.23.2 h1:HbBzoe9Pssj4UjvbeBUPHz7cpCt/7/LpVKu4olhPcKk=
-github.com/AdguardTeam/dnsproxy v0.23.2/go.mod h1:2qy8rpdfBzKgMPxkHmPdaNK4XZJ322v4KtVGI8s8Bn0=
+github.com/AdguardTeam/dnsproxy v0.23.3 h1:RzI9M0sX99t7qnlikvKTPW25sCFzgfBStxUJ+2z1KQI=
+github.com/AdguardTeam/dnsproxy v0.23.3/go.mod h1:2qy8rpdfBzKgMPxkHmPdaNK4XZJ322v4KtVGI8s8Bn0=
 github.com/AdguardTeam/golibs v0.2.4 h1:GUssokegKxKF13K67Pgl0ZGwqHjNN6X7sep5ik6ORdY=
 github.com/AdguardTeam/golibs v0.2.4/go.mod h1:R3M+mAg3nWG4X4Hsag5eef/TckHFH12ZYhK7AzJc8+U=
 github.com/AdguardTeam/golibs v0.3.0 h1:1zO8ulGEOdXDDM++Ap4sYfTsT/Z4tZBZtiWSA4ykcOU=