diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/dns/dot_client.go | 10 | ||||
| -rw-r--r-- | lib/dns/server.go | 2 | ||||
| -rw-r--r-- | 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 { |
