Skip to content

Commit cb35bb0

Browse files
committed
Fix Exchange may still modify original requests
1 parent c3cbf4a commit cb35bb0

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

transport_tcp.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func (t *TCPTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg
7979
return nil, err
8080
}
8181
defer conn.Close()
82-
err = writeMessage(conn, message)
82+
err = writeMessage(conn, 0, message)
8383
if err != nil {
8484
return nil, err
8585
}
@@ -110,12 +110,13 @@ func readMessage(reader io.Reader) (*dns.Msg, error) {
110110
return &message, err
111111
}
112112

113-
func writeMessage(writer io.Writer, message *dns.Msg) error {
113+
func writeMessage(writer io.Writer, messageId uint16, message *dns.Msg) error {
114114
requestLen := message.Len()
115115
buffer := buf.NewSize(3 + requestLen)
116116
defer buffer.Release()
117117
common.Must(binary.Write(buffer, binary.BigEndian, uint16(requestLen)))
118118
exMessage := *message
119+
exMessage.Id = messageId
119120
exMessage.Compress = true
120121
rawMessage, err := exMessage.PackBuffer(buffer.FreeBytes())
121122
if err != nil {

transport_tls.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,8 @@ func (t *TLSTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg
115115
}
116116

117117
func (t *TLSTransport) exchange(message *dns.Msg, conn *tlsDNSConn) (*dns.Msg, error) {
118-
messageId := message.Id
119118
conn.queryId++
120-
message.Id = conn.queryId
121-
err := writeMessage(conn, message)
119+
err := writeMessage(conn, conn.queryId, message)
122120
if err != nil {
123121
conn.Close()
124122
return nil, E.Cause(err, "write request")
@@ -128,7 +126,6 @@ func (t *TLSTransport) exchange(message *dns.Msg, conn *tlsDNSConn) (*dns.Msg, e
128126
conn.Close()
129127
return nil, E.Cause(err, "read response")
130128
}
131-
response.Id = messageId
132129
t.access.Lock()
133130
t.connections.PushBack(conn)
134131
t.access.Unlock()

0 commit comments

Comments
 (0)