Skip to content

Commit b14ceca

Browse files
committed
Fix DNS packet size
1 parent 2594745 commit b14ceca

File tree

4 files changed

+7
-13
lines changed

4 files changed

+7
-13
lines changed

dns/transport/dhcp/dhcp_shared.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@ import (
1616
mDNS "github.com/miekg/dns"
1717
)
1818

19-
const (
20-
// net.maxDNSPacketSize
21-
maxDNSPacketSize = 1232
22-
)
23-
2419
func (t *Transport) exchangeSingleRequest(ctx context.Context, servers []M.Socksaddr, message *mDNS.Msg, domain string) (*mDNS.Msg, error) {
2520
var lastErr error
2621
for _, fqdn := range t.nameList(domain) {
@@ -118,7 +113,7 @@ func (t *Transport) exchangeOne(ctx context.Context, server M.Socksaddr, questio
118113
Question: []mDNS.Question{question},
119114
Compress: true,
120115
}
121-
request.SetEdns0(maxDNSPacketSize, false)
116+
request.SetEdns0(buf.UDPBufferSize, false)
122117
buffer := buf.Get(buf.UDPBufferSize)
123118
defer buf.Put(buffer)
124119
for _, network := range networks {

dns/transport/local/local.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package local
22

33
import (
44
"context"
5+
"errors"
56
"math/rand"
7+
"syscall"
68
"time"
79

810
"github.com/sagernet/sing-box/adapter"
@@ -164,7 +166,7 @@ func (t *Transport) exchangeOne(ctx context.Context, server M.Socksaddr, questio
164166
Question: []mDNS.Question{question},
165167
Compress: true,
166168
}
167-
request.SetEdns0(maxDNSPacketSize, false)
169+
request.SetEdns0(buf.UDPBufferSize, false)
168170
buffer := buf.Get(buf.UDPBufferSize)
169171
defer buf.Put(buffer)
170172
for _, network := range networks {
@@ -184,6 +186,9 @@ func (t *Transport) exchangeOne(ctx context.Context, server M.Socksaddr, questio
184186
}
185187
_, err = conn.Write(rawMessage)
186188
if err != nil {
189+
if errors.Is(err, syscall.EMSGSIZE) && network == N.NetworkUDP {
190+
continue
191+
}
187192
return nil, E.Cause(err, "write request")
188193
}
189194
n, err := conn.Read(buffer)

dns/transport/local/resolv.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@ import (
1010
"time"
1111
)
1212

13-
const (
14-
// net.maxDNSPacketSize
15-
maxDNSPacketSize = 1232
16-
)
17-
1813
type resolverConfig struct {
1914
initOnce sync.Once
2015
ch chan struct{}

dns/transport_dialer.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ func NewLocalDialer(ctx context.Context, options option.LocalDNSServerOptions) (
1919
if options.LegacyDefaultDialer {
2020
return dialer.NewDefaultOutbound(ctx), nil
2121
} else {
22-
options.UDPFragmentDefault = true
2322
return dialer.NewWithOptions(dialer.Options{
2423
Context: ctx,
2524
Options: options.DialerOptions,

0 commit comments

Comments
 (0)