Skip to content

Commit 6916c04

Browse files
authored
Use registeredServers slice copy during ServerInfo refreshing period (#2125)
goroutines: proxy.updateRegisteredServers() versus proxy.serversInfo.refresh(proxy)
1 parent 8d737a6 commit 6916c04

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

dnscrypt-proxy/serversInfo.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,9 @@ func (serversInfo *ServersInfo) refreshServer(proxy *Proxy, name string, stamp s
223223
func (serversInfo *ServersInfo) refresh(proxy *Proxy) (int, error) {
224224
dlog.Debug("Refreshing certificates")
225225
serversInfo.RLock()
226-
registeredServers := serversInfo.registeredServers
226+
// Appending registeredServers slice from sources may allocate new memory.
227+
registeredServers := make([]RegisteredServer, len(serversInfo.registeredServers))
228+
copy(registeredServers, serversInfo.registeredServers)
227229
serversInfo.RUnlock()
228230
liveServers := 0
229231
var err error

0 commit comments

Comments
 (0)