Mercurial > lbo > hg > dnsoverrpc
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 } }