aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/dns/dot_client.go10
-rw-r--r--lib/dns/server.go2
-rw-r--r--lib/dns/tcp_client.go10
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 {