Skip to content

Commit 4824e91

Browse files
committed
Remove the serverInfo rwlock; just use the global serversInfo rwlock
1 parent d17b572 commit 4824e91

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

dnscrypt-proxy/serversInfo.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ type RegisteredServer struct {
3232
}
3333

3434
type ServerInfo struct {
35-
sync.RWMutex
3635
Proto stamps.StampProtoType
3736
MagicQuery [8]byte
3837
ServerPk [32]byte
@@ -158,6 +157,7 @@ func (serversInfo *ServersInfo) refresh(proxy *Proxy) (int, error) {
158157
}
159158

160159
func (serversInfo *ServersInfo) estimatorUpdate() {
160+
// serversInfo.RWMutex is assumed to be Locked
161161
candidate := rand.Intn(len(serversInfo.inner))
162162
if candidate == 0 {
163163
return
@@ -191,9 +191,9 @@ func (serversInfo *ServersInfo) estimatorUpdate() {
191191

192192
func (serversInfo *ServersInfo) getOne() *ServerInfo {
193193
serversInfo.Lock()
194+
defer serversInfo.Unlock()
194195
serversCount := len(serversInfo.inner)
195196
if serversCount <= 0 {
196-
serversInfo.Unlock()
197197
return nil
198198
}
199199
if serversInfo.lbEstimator {
@@ -211,7 +211,6 @@ func (serversInfo *ServersInfo) getOne() *ServerInfo {
211211
candidate = rand.Intn(Min(serversCount, 2))
212212
}
213213
serverInfo := serversInfo.inner[candidate]
214-
serversInfo.Unlock()
215214
dlog.Debugf("Using candidate [%s] RTT: %d", (*serverInfo).Name, int((*serverInfo).rtt.Value()))
216215

217216
return serverInfo
@@ -415,24 +414,24 @@ func fetchDoHServerInfo(proxy *Proxy, name string, stamp stamps.ServerStamp, isN
415414
}
416415

417416
func (serverInfo *ServerInfo) noticeFailure(proxy *Proxy) {
418-
serverInfo.Lock()
417+
proxy.serversInfo.Lock()
419418
serverInfo.rtt.Add(float64(proxy.timeout.Nanoseconds() / 1000000))
420-
serverInfo.Unlock()
419+
proxy.serversInfo.Unlock()
421420
}
422421

423422
func (serverInfo *ServerInfo) noticeBegin(proxy *Proxy) {
424-
serverInfo.Lock()
423+
proxy.serversInfo.Lock()
425424
serverInfo.lastActionTS = time.Now()
426-
serverInfo.Unlock()
425+
proxy.serversInfo.Unlock()
427426
}
428427

429428
func (serverInfo *ServerInfo) noticeSuccess(proxy *Proxy) {
430429
now := time.Now()
431-
serverInfo.Lock()
430+
proxy.serversInfo.Lock()
432431
elapsed := now.Sub(serverInfo.lastActionTS)
433432
elapsedMs := elapsed.Nanoseconds() / 1000000
434433
if elapsedMs > 0 && elapsed < proxy.timeout {
435434
serverInfo.rtt.Add(float64(elapsedMs))
436435
}
437-
serverInfo.Unlock()
436+
proxy.serversInfo.Unlock()
438437
}

0 commit comments

Comments
 (0)