Explorar el Código

Read the configuration and start the dns server in separate goroutines

Ask Bjørn Hansen hace 13 años
padre
commit
ee1e6ae800
Se han modificado 3 ficheros con 5 adiciones y 8 borrados
  1. 1 1
      config.go
  2. 2 2
      geodns.go
  3. 2 5
      serve.go

+ 1 - 1
config.go

@@ -8,7 +8,6 @@ import (
 	"net"
 	"path"
 	"sort"
-
 	"strconv"
 	"strings"
 )
@@ -28,6 +27,7 @@ func configReader(dirName string, Zones Zones) {
 		log.Println("FILE:", i, file, zoneName)
 		config := readZoneFile(zoneName, path.Join(dirName, fileName))
 		Zones[zoneName] = config
+		dns.HandleFunc(zoneName, setupServerFunc(config))
 	}
 
 	log.Println("ZONES", Zones)

+ 2 - 2
geodns.go

@@ -27,8 +27,8 @@ func main() {
 
 	Zones := make(Zones)
 
-	configReader(dirName, Zones)
-	startServer(&Zones)
+	go configReader(dirName, Zones)
+	go startServer(&Zones)
 
 	if *flagrun {
 		sig := make(chan os.Signal)

+ 2 - 5
serve.go

@@ -76,17 +76,14 @@ func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone) {
 	return
 }
 
-func setupServer(Zone Zone) func(dns.ResponseWriter, *dns.Msg) {
+func setupServerFunc(Zone *Zone) func(dns.ResponseWriter, *dns.Msg) {
 	return func(w dns.ResponseWriter, r *dns.Msg) {
-		serve(w, r, &Zone)
+		serve(w, r, Zone)
 	}
 }
 
 func startServer(Zones *Zones) {
 
-	for zoneName, Zone := range *Zones {
-		dns.HandleFunc(zoneName, setupServer(*Zone))
-	}
 	// Only listen on UDP for now
 	go func() {
 		log.Printf("Opening on %s %s", *listen, "udp")