changeset 4:0a6f3af05763

Fix too low DNS packet buffers
author Lewin Bormann <lbo@spheniscida.de>
date Thu, 01 Oct 2020 14:26:33 +0200
parents 4207d32497e2
children 2eff863290d5
files client/client.go go.sum server/server.go
diffstat 3 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/client/client.go	Thu Oct 01 12:09:02 2020 +0200
+++ b/client/client.go	Thu Oct 01 14:26:33 2020 +0200
@@ -13,6 +13,8 @@
 	"golang.org/x/net/dns/dnsmessage"
 )
 
+const MAX_DNS_PACKET_SIZE = 65535
+
 func extractQueryHost(pkg []byte) (string, error) {
 	p := dnsmessage.Parser{}
 	_, err := p.Start(pkg)
@@ -40,7 +42,7 @@
 }
 
 func (dc *dnsclient) run() {
-	pkg := make([]byte, 1500)
+	pkg := make([]byte, MAX_DNS_PACKET_SIZE)
 	log.Println("Resolver", dc.n, "ready")
 
 	for {
--- a/go.sum	Thu Oct 01 12:09:02 2020 +0200
+++ b/go.sum	Thu Oct 01 14:26:33 2020 +0200
@@ -1,5 +1,3 @@
-github.com/dermesser/clusterrpc v0.1.0 h1:aLqhyuzHYCJWlC6AgVJOPTX9JLUcM6LjWxlE1v4XEYU=
-github.com/dermesser/clusterrpc v0.1.0/go.mod h1:fTvk9LKIf++inkSQusY9Z4WYwATKeTsvzcs/XxG7ACw=
 github.com/dermesser/clusterrpc v0.1.1 h1:/WjD641Ni8WFNSnHTbazR0IY/6lWSCFf8Ub3GbqxqVM=
 github.com/dermesser/clusterrpc v0.1.1/go.mod h1:fTvk9LKIf++inkSQusY9Z4WYwATKeTsvzcs/XxG7ACw=
 github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
--- a/server/server.go	Thu Oct 01 12:09:02 2020 +0200
+++ b/server/server.go	Thu Oct 01 14:26:33 2020 +0200
@@ -13,6 +13,8 @@
 	"golang.org/x/net/dns/dnsmessage"
 )
 
+const MAX_DNS_PACKET_SIZE = 65535
+
 func extractQueryHost(pkg []byte) (string, error) {
 	p := dnsmessage.Parser{}
 	_, err := p.Start(pkg)
@@ -61,6 +63,7 @@
 		}
 		s.conn = conn
 	}
+	buf := make([]byte, MAX_DNS_PACKET_SIZE)
 
 	for req := range s.reqs {
 		pkg := req.pkg
@@ -83,15 +86,16 @@
 		if sz != len(pkg) {
 			log.Println("Warning: Wrote only", sz, "of", len(pkg), "bytes!")
 		}
-		dst := make([]byte, 1500)
 		s.conn.SetReadDeadline(time.Now().Add(1 * time.Second))
-		sz, err = s.conn.Read(dst)
+		sz, err = s.conn.Read(buf)
 		if err != nil {
 			log.Print(err)
 			respch <- nil
 			continue
 		}
-		respch <- dst[0:sz]
+		result := make([]byte, sz)
+		copy(result, buf[0:sz])
+		respch <- result
 	}
 }