Skip to content

Commit 26cc68b

Browse files
committed
Make startup *way* faster, especially when using DoH
1 parent b624f8e commit 26cc68b

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

dnscrypt-proxy/serversInfo.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ func (serversInfo *ServersInfo) registerServer(proxy *Proxy, name string, stamp
8484
}
8585

8686
func (serversInfo *ServersInfo) refreshServer(proxy *Proxy, name string, stamp stamps.ServerStamp) error {
87-
serversInfo.Lock()
88-
defer serversInfo.Unlock()
87+
serversInfo.RLock()
8988
previousIndex := -1
9089
for i, oldServer := range serversInfo.inner {
9190
if oldServer.Name == name {
9291
previousIndex = i
9392
break
9493
}
9594
}
95+
serversInfo.RUnlock()
9696
newServer, err := serversInfo.fetchServerInfo(proxy, name, stamp, previousIndex < 0)
9797
if err != nil {
9898
return err
@@ -101,6 +101,15 @@ func (serversInfo *ServersInfo) refreshServer(proxy *Proxy, name string, stamp s
101101
dlog.Fatalf("[%s] != [%s]", name, newServer.Name)
102102
}
103103
newServer.rtt = ewma.NewMovingAverage(RTTEwmaDecay)
104+
serversInfo.Lock()
105+
defer serversInfo.Unlock()
106+
previousIndex = -1
107+
for i, oldServer := range serversInfo.inner {
108+
if oldServer.Name == name {
109+
previousIndex = i
110+
break
111+
}
112+
}
104113
if previousIndex >= 0 {
105114
serversInfo.inner[previousIndex] = &newServer
106115
return nil

0 commit comments

Comments
 (0)