PluginDNS64: Use read and write mutexes as approp (#2124)

This commit is contained in:
ignoramous 2022-06-12 14:57:55 +05:30 committed by GitHub
parent 866954fbad
commit 8d737a69f5
Failed to generate hash of commit

View file

@ -42,8 +42,8 @@ func (plugin *PluginDNS64) Init(proxy *Proxy) error {
plugin.proxy = proxy
if len(proxy.dns64Prefixes) != 0 {
plugin.pref64Mutex.RLock()
defer plugin.pref64Mutex.RUnlock()
plugin.pref64Mutex.Lock()
defer plugin.pref64Mutex.Unlock()
for _, prefStr := range proxy.dns64Prefixes {
_, pref, err := net.ParseCIDR(prefStr)
if err != nil {
@ -132,7 +132,7 @@ func (plugin *PluginDNS64) Eval(pluginsState *PluginsState, msg *dns.Msg) error
ipv4 := answer.(*dns.A).A.To4()
if ipv4 != nil {
plugin.pref64Mutex.Lock()
plugin.pref64Mutex.RLock()
for _, prefix := range plugin.pref64 {
ipv6 := translateToIPv6(ipv4, prefix)
synthAAAA := new(dns.AAAA)
@ -145,7 +145,7 @@ func (plugin *PluginDNS64) Eval(pluginsState *PluginsState, msg *dns.Msg) error
synthAAAA.AAAA = ipv6
synthAAAAs = append(synthAAAAs, synthAAAA)
}
plugin.pref64Mutex.Unlock()
plugin.pref64Mutex.RUnlock()
}
}
}
@ -239,8 +239,8 @@ func (plugin *PluginDNS64) fetchPref64(resolver string) error {
return errors.New("Empty Pref64 list")
}
plugin.pref64Mutex.RLock()
defer plugin.pref64Mutex.RUnlock()
plugin.pref64Mutex.Lock()
defer plugin.pref64Mutex.Unlock()
plugin.pref64 = prefixes
return nil
}
@ -252,8 +252,8 @@ func (plugin *PluginDNS64) refreshPref64() error {
}
}
plugin.pref64Mutex.Lock()
defer plugin.pref64Mutex.Unlock()
plugin.pref64Mutex.RLock()
defer plugin.pref64Mutex.RUnlock()
if len(plugin.pref64) == 0 {
return errors.New("Empty Pref64 list")
}