File tree Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Expand file tree Collapse file tree 1 file changed +21
-2
lines changed Original file line number Diff line number Diff line change @@ -84,6 +84,9 @@ func startListener(server *dns.Server) {
8484}
8585
8686func handleQuery (w dns.ResponseWriter , r * dns.Msg ) {
87+ if r .Question == nil {
88+ return
89+ }
8790 cfg := config .GetConfig ()
8891 m := new (dns.Msg )
8992
@@ -165,6 +168,18 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
165168 if cfg .Dns .RecursionEnabled {
166169 // Pick random nameserver for domain
167170 tmpNameserver := randomNameserverAddress (nameservers )
171+ if tmpNameserver == nil {
172+ m .SetRcode (r , dns .RcodeServerFailure )
173+ if err := w .WriteMsg (m ); err != nil {
174+ slog .Error (
175+ "unable to get nameserver" ,
176+ )
177+ }
178+ slog .Error (
179+ "unable to get nameserver" ,
180+ )
181+ return
182+ }
168183 // Query the random domain nameserver we picked above
169184 resp , err := doQuery (r , tmpNameserver .String (), true )
170185 if err != nil {
@@ -469,9 +484,13 @@ func getAddressForNameFromResponse(msg *dns.Msg, recordName string) string {
469484 }
470485 switch v := retRR .(type ) {
471486 case * dns.A :
472- return v .A .String ()
487+ if v .A != nil {
488+ return v .A .String ()
489+ }
473490 case * dns.AAAA :
474- return v .AAAA .String ()
491+ if v .AAAA != nil {
492+ return v .AAAA .String ()
493+ }
475494 }
476495 return ""
477496}
You can’t perform that action at this time.
0 commit comments