Browse Source

skip answer if it is not A or AAAA record

Darien Raymond 7 years ago
parent
commit
9cad27e9bd
1 changed files with 8 additions and 0 deletions
  1. 8 0
      app/dns/udpns.go

+ 8 - 0
app/dns/udpns.go

@@ -132,6 +132,9 @@ func (s *ClassicNameServer) HandleResponse(ctx context.Context, payload *buf.Buf
 	for {
 		header, err := parser.AnswerHeader()
 		if err != nil {
+			if err != dnsmessage.ErrSectionDone {
+				newError("failed to parse answer section for domain: ", domain).Base(err).WriteToLog()
+			}
 			break
 		}
 		ttl := header.TTL
@@ -142,6 +145,7 @@ func (s *ClassicNameServer) HandleResponse(ctx context.Context, payload *buf.Buf
 		case dnsmessage.TypeA:
 			ans, err := parser.AResource()
 			if err != nil {
+				newError("failed to parse A record for domain: ", domain).Base(err).WriteToLog()
 				break
 			}
 			ips = append(ips, IPRecord{
@@ -151,6 +155,7 @@ func (s *ClassicNameServer) HandleResponse(ctx context.Context, payload *buf.Buf
 		case dnsmessage.TypeAAAA:
 			ans, err := parser.AAAAResource()
 			if err != nil {
+				newError("failed to parse A record for domain: ", domain).Base(err).WriteToLog()
 				break
 			}
 			ips = append(ips, IPRecord{
@@ -158,6 +163,9 @@ func (s *ClassicNameServer) HandleResponse(ctx context.Context, payload *buf.Buf
 				Expire: now.Add(time.Duration(ttl) * time.Second),
 			})
 		default:
+			if err := parser.SkipAnswer(); err != nil {
+				newError("failed to skip answer").Base(err).WriteToLog()
+			}
 		}
 	}