From 6c7b070156c030de11c2a4b46ea6101f7e6142c0 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Tue, 27 Jan 2026 14:55:37 +0700 Subject: lib/dns: minimize use of append In handleDoHRequest, we did not need to call append, just copy it as is. In DoTClient and TCPClient, since we already do make, use direct copy instead of another append. --- lib/dns/dot_client.go | 10 +++++----- lib/dns/server.go | 2 +- lib/dns/tcp_client.go | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/dns/dot_client.go b/lib/dns/dot_client.go index a3eea4af..870a1395 100644 --- a/lib/dns/dot_client.go +++ b/lib/dns/dot_client.go @@ -6,7 +6,6 @@ package dns import ( "crypto/tls" - "encoding/binary" "errors" "fmt" "net" @@ -162,12 +161,13 @@ func (cl *DoTClient) Write(msg []byte) (n int, err error) { } var ( - lenmsg = len(msg) - packet = make([]byte, 0, 2+lenmsg) + lenmsg = uint16(len(msg)) + packet = make([]byte, 2+lenmsg) ) - packet = binary.BigEndian.AppendUint16(packet, uint16(lenmsg)) - packet = append(packet, msg...) + packet[0] = byte(lenmsg >> 8) + packet[1] = byte(lenmsg) + copy(packet[2:], msg) n, err = cl.conn.Write(packet) if err != nil { diff --git a/lib/dns/server.go b/lib/dns/server.go index 32fd8241..2090d383 100644 --- a/lib/dns/server.go +++ b/lib/dns/server.go @@ -476,7 +476,7 @@ func (srv *Server) handleDoHRequest(raw []byte, w http.ResponseWriter) { req.kind = connTypeDoH req.writer = cl - req.message.packet = append(req.message.packet[:0], raw...) + req.message.packet = raw err = req.message.UnpackHeaderQuestion() if err != nil { diff --git a/lib/dns/tcp_client.go b/lib/dns/tcp_client.go index 402540f6..da745892 100644 --- a/lib/dns/tcp_client.go +++ b/lib/dns/tcp_client.go @@ -5,7 +5,6 @@ package dns import ( - "encoding/binary" "errors" "fmt" "io" @@ -172,12 +171,13 @@ func (cl *TCPClient) Write(msg []byte) (n int, err error) { } var ( - lenmsg = len(msg) - packet = make([]byte, 0, 2+lenmsg) + lenmsg = uint16(len(msg)) + packet = make([]byte, 2+lenmsg) ) - packet = binary.BigEndian.AppendUint16(packet, uint16(lenmsg)) - packet = append(packet, msg...) + packet[0] = byte(lenmsg >> 8) + packet[1] = byte(lenmsg) + copy(packet[2:], msg) n, err = cl.conn.Write(packet) if err != nil { -- cgit v1.3