Always compress DNS responses

This commit is contained in:
世界 committed 2026-10-23 19:57:02 +08:00
1 parent 6fb6770cec
commit e2008d6b7d
3 files changed
+12 -6

No files matched your search

+6 -4
View File
@@ -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
+3 -1
View File
@@ -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
}
+3 -1
View File
@@ -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()
}