dnsforward library -- Fix race conditions found by -race

This commit is contained in:
Eugene Bujak 2018-11-28 16:26:33 +03:00
parent ea1353422f
commit 639b34c7d1
1 changed files with 12 additions and 8 deletions

View File

@ -185,19 +185,23 @@ func (s *Server) reconfigureListenAddr(new ServerConfig) error {
if err != nil {
return errorx.Decorate(err, "Couldn't bind to %v", newAddr)
}
s.Lock()
if s.udpListen != nil {
err := s.udpListen.Close()
if err != nil {
return errorx.Decorate(err, "Couldn't close UDP listening socket")
}
err = s.udpListen.Close()
}
s.Unlock()
if err != nil {
return errorx.Decorate(err, "Couldn't close UDP listening socket")
}
} else {
log.Printf("Rebinding -- ports are same so close first then bind")
s.Lock()
if s.udpListen != nil {
err := s.udpListen.Close()
if err != nil {
return errorx.Decorate(err, "Couldn't close UDP listening socket")
}
err = s.udpListen.Close()
}
s.Unlock()
if err != nil {
return errorx.Decorate(err, "Couldn't close UDP listening socket")
}
newListen, err = net.ListenUDP("udp", newAddr)
if err != nil {