Browse Source

edns tweaks

Ask Bjørn Hansen 12 years ago
parent
commit
2ba7029c63
1 changed files with 10 additions and 8 deletions
  1. 10 8
      serve.go

+ 10 - 8
serve.go

@@ -36,12 +36,12 @@ func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone) {
 
 	var ip string
 	var edns *dns.EDNS0_SUBNET
-	var opt_rr *dns.RR_OPT
+	var opt_rr *dns.OPT
 
 	for _, extra := range req.Extra {
 		log.Println("Extra", extra)
-		for _, o := range extra.(*dns.RR_OPT).Option {
-			opt_rr = extra.(*dns.RR_OPT)
+		for _, o := range extra.(*dns.OPT).Option {
+			opt_rr = extra.(*dns.OPT)
 			switch e := o.(type) {
 			case *dns.EDNS0_NSID:
 				// do stuff with e.Nsid
@@ -74,11 +74,13 @@ func serve(w dns.ResponseWriter, req *dns.Msg, z *Zone) {
 	m.Authoritative = true
 
 	// TODO: set scope to 0 if there are no alternate responses
-	log.Println("family", edns.Family)
-	if edns.Family != 0 {
-		log.Println("edns response!")
-		edns.SourceScope = 16
-		m.Extra = append(m.Extra, opt_rr)
+	if edns != nil {
+		log.Println("family", edns.Family)
+		if edns.Family != 0 {
+			log.Println("edns response!")
+			edns.SourceScope = 16
+			m.Extra = append(m.Extra, opt_rr)
+		}
 	}
 
 	// TODO(ask) Fix the findLabels API to make this work better