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) {
84
84
}
85
85
86
86
func handleQuery (w dns.ResponseWriter , r * dns.Msg ) {
87
+ if r .Question == nil {
88
+ return
89
+ }
87
90
cfg := config .GetConfig ()
88
91
m := new (dns.Msg )
89
92
@@ -165,6 +168,18 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
165
168
if cfg .Dns .RecursionEnabled {
166
169
// Pick random nameserver for domain
167
170
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
+ }
168
183
// Query the random domain nameserver we picked above
169
184
resp , err := doQuery (r , tmpNameserver .String (), true )
170
185
if err != nil {
@@ -469,9 +484,13 @@ func getAddressForNameFromResponse(msg *dns.Msg, recordName string) string {
469
484
}
470
485
switch v := retRR .(type ) {
471
486
case * dns.A :
472
- return v .A .String ()
487
+ if v .A != nil {
488
+ return v .A .String ()
489
+ }
473
490
case * dns.AAAA :
474
- return v .AAAA .String ()
491
+ if v .AAAA != nil {
492
+ return v .AAAA .String ()
493
+ }
475
494
}
476
495
return ""
477
496
}
You can’t perform that action at this time.
0 commit comments