Ver Fonte

Move the 'keep running forever' code to geodns.go, minor tweaks

Ask Bjørn Hansen há 13 anos atrás
pai
commit
7cdb960b00
2 ficheiros alterados com 20 adições e 20 exclusões
  1. 18 1
      geodns.go
  2. 2 19
      serve.go

+ 18 - 1
geodns.go

@@ -3,6 +3,8 @@ package main
 import (
 	"flag"
 	"log"
+	"os"
+	"os/signal"
 )
 
 var (
@@ -26,5 +28,20 @@ func main() {
 	Zones := make(Zones)
 
 	configReader(dirName, Zones)
-	runServe(&Zones)
+	startServer(&Zones)
+
+	if *flagrun {
+		sig := make(chan os.Signal)
+		signal.Notify(sig, os.Interrupt)
+
+	forever:
+		for {
+			select {
+			case <-sig:
+				log.Printf("geodns: signal received, stopping")
+				break forever
+			}
+		}
+	}
+
 }

+ 2 - 19
serve.go

@@ -3,8 +3,6 @@ package main
 import (
 	"github.com/miekg/dns"
 	"log"
-	"os"
-	"os/signal"
 	"strings"
 )
 
@@ -84,31 +82,16 @@ func setupServer(Zone Zone) func(dns.ResponseWriter, *dns.Msg) {
 	}
 }
 
-func runServe(Zones *Zones) {
+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")
 		if err := dns.ListenAndServe(*listen, "udp", nil); err != nil {
 			log.Fatalf("geodns: failed to setup %s %s", *listen, "udp")
 		}
 	}()
-
-	if *flagrun {
-
-		sig := make(chan os.Signal)
-		signal.Notify(sig, os.Interrupt)
-
-	forever:
-		for {
-			select {
-			case <-sig:
-				log.Printf("geodns: signal received, stopping")
-				break forever
-			}
-		}
-	}
-
 }