From fb0c62f7123cb39c0e327ff1515536ce2ed6c3db Mon Sep 17 00:00:00 2001 From: Sina Ghaderi <32870524+Sina-Ghaderi@users.noreply.github.com> Date: Fri, 29 Oct 2021 15:05:39 +0330 Subject: concurrent read/write panic --- dns-server.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dns-server.go b/dns-server.go index 197a17b..97e616b 100644 --- a/dns-server.go +++ b/dns-server.go @@ -10,6 +10,7 @@ import ( "os" "regexp" "strings" + "sync" "time" "github.com/miekg/dns" @@ -75,6 +76,7 @@ const regTCPUDP string = "^(tcp|udp)$" const ipONLY string = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" var dataCH = make(map[string]string) +var datamx = &sync.Mutex{} var fakeAdd *string func timeCh() { @@ -155,7 +157,9 @@ func haveIT(domain string) (string, bool) { } if addr, ok := askUpstr(domain); ok { + datamx.Lock() dataCH[domain] = addr + datamx.Unlock() return addr, true } return "err", false -- cgit v1.2.3