]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.17] net: increase maximum accepted DNS packet to 1232 bytes
authorIan Lance Taylor <iant@golang.org>
Tue, 15 Feb 2022 21:40:49 +0000 (13:40 -0800)
committerDmitri Shuralyov <dmitshur@golang.org>
Thu, 17 Feb 2022 19:27:53 +0000 (19:27 +0000)
The existing value of 512 bytes as is specified by RFC 1035.
However, the WSL resolver reportedly sends larger packets without
setting the truncation bit, which breaks using the Go resolver.
For 1.18 and backports, just increase the accepted packet size.
This is what GNU glibc does (they use 65536 bytes).

For 1.19 we plan to use EDNS to set the accepted packet size.
That will give us more time to test whether that causes any problems.

No test because I'm not sure how to write one and it wouldn't really
be useful anyhow.

For #6464
For #21160
For #44135
For #51127
For #51153
Fixes #51162

Change-Id: I0243f274a06e010ebb714e138a65386086aecf17
Reviewed-on: https://go-review.googlesource.com/c/go/+/386015
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
(cherry picked from commit 6e82ff83cfbef78aa60706c1a7167a31c30e7ef9)
Reviewed-on: https://go-review.googlesource.com/c/go/+/386035
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
src/net/dnsclient_unix.go
src/net/dnsclient_unix_test.go

index 50e9bb0f20dd70745541c67c016eab7fa068ccd2..6dfd4af957882ed539ef5eb436a45201da9ab9a8 100644 (file)
@@ -31,6 +31,10 @@ const (
        // to be used as a useTCP parameter to exchange
        useTCPOnly  = true
        useUDPOrTCP = false
+
+       // Maximum DNS packet size.
+       // Value taken from https://dnsflagday.net/2020/.
+       maxDNSPacketSize = 1232
 )
 
 var (
@@ -83,7 +87,7 @@ func dnsPacketRoundTrip(c Conn, id uint16, query dnsmessage.Question, b []byte)
                return dnsmessage.Parser{}, dnsmessage.Header{}, err
        }
 
-       b = make([]byte, 512) // see RFC 1035
+       b = make([]byte, maxDNSPacketSize)
        for {
                n, err := c.Read(b)
                if err != nil {
index 350ad5def797bc9b95aa4a9c1a56b58e8f5db7f2..35d03690496d4b6dbc820fdcfd126cf933f66edb 100644 (file)
@@ -882,7 +882,7 @@ func (f *fakeDNSPacketConn) Close() error {
 func TestIgnoreDNSForgeries(t *testing.T) {
        c, s := Pipe()
        go func() {
-               b := make([]byte, 512)
+               b := make([]byte, maxDNSPacketSize)
                n, err := s.Read(b)
                if err != nil {
                        t.Error(err)