mirror of
https://github.com/SagerNet/sing-box.git
synced 2026-11-10 21:21:02 +08:00
Always compress DNS responses
This commit is contained in:
3 files changed
+12
-6
No files matched your search
@@ -14,13 +14,15 @@ func TruncateDNSMessage(request *dns.Msg, response *dns.Msg, frontHeadroom int,
|
||||
}
|
||||
}
|
||||
responseLen := response.Len()
|
||||
if responseLen > maxLen {
|
||||
response = response.Copy()
|
||||
response.Truncate(maxLen)
|
||||
compressedResponse := *response
|
||||
compressedResponse.Compress = true
|
||||
if compressedResponse.Len() > maxLen {
|
||||
compressedResponse = *response.Copy()
|
||||
compressedResponse.Truncate(maxLen)
|
||||
}
|
||||
buffer := buf.NewSize(frontHeadroom + responseLen + 1 + rearHeadroom)
|
||||
buffer.Resize(frontHeadroom, 0)
|
||||
rawMessage, err := response.PackBuffer(buffer.FreeBytes())
|
||||
rawMessage, err := compressedResponse.PackBuffer(buffer.FreeBytes())
|
||||
if err != nil {
|
||||
buffer.Release()
|
||||
return nil, err
|
||||
|
||||
@@ -55,7 +55,9 @@ func writeStreamResponse(conn net.Conn, response *mDNS.Msg) {
|
||||
responseBuffer := buf.NewSize(3 + responseLength)
|
||||
defer responseBuffer.Release()
|
||||
responseBuffer.Resize(2, 0)
|
||||
n, err := response.PackBuffer(responseBuffer.FreeBytes())
|
||||
compressedResponse := *response
|
||||
compressedResponse.Compress = true
|
||||
n, err := compressedResponse.PackBuffer(responseBuffer.FreeBytes())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1085,5 +1085,7 @@ func (t *peerDNSQueryHandler) HandlePeerDNSQuery(ctx context.Context, query []by
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
return response.Pack()
|
||||
compressedResponse := *response
|
||||
compressedResponse.Compress = true
|
||||
return compressedResponse.Pack()
|
||||
}
|
||||
Reference in new issue
Block a user