Skip to content

Commit bda82fb

Browse files
committed
Improve TLS transport
1 parent 0a28658 commit bda82fb

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

transport_tls.go

+20-13
Original file line numberDiff line numberDiff line change
@@ -93,21 +93,28 @@ func (t *TLSTransport) Exchange(ctx context.Context, message *dns.Msg) (*dns.Msg
9393
t.access.Lock()
9494
conn := t.connections.PopFront()
9595
t.access.Unlock()
96-
if conn == nil {
97-
tcpConn, err := t.dialer.DialContext(ctx, N.NetworkTCP, t.serverAddr)
98-
if err != nil {
99-
return nil, err
96+
if conn != nil {
97+
response, err := t.exchange(message, conn)
98+
if err == nil {
99+
return response, nil
100100
}
101-
tlsConn := tls.Client(tcpConn, &tls.Config{
102-
ServerName: t.serverAddr.AddrString(),
103-
})
104-
err = tlsConn.HandshakeContext(ctx)
105-
if err != nil {
106-
tcpConn.Close()
107-
return nil, err
108-
}
109-
conn = &tlsDNSConn{Conn: tlsConn}
110101
}
102+
tcpConn, err := t.dialer.DialContext(ctx, N.NetworkTCP, t.serverAddr)
103+
if err != nil {
104+
return nil, err
105+
}
106+
tlsConn := tls.Client(tcpConn, &tls.Config{
107+
ServerName: t.serverAddr.AddrString(),
108+
})
109+
err = tlsConn.HandshakeContext(ctx)
110+
if err != nil {
111+
tcpConn.Close()
112+
return nil, err
113+
}
114+
return t.exchange(message, &tlsDNSConn{Conn: tlsConn})
115+
}
116+
117+
func (t *TLSTransport) exchange(message *dns.Msg, conn *tlsDNSConn) (*dns.Msg, error) {
111118
messageId := message.Id
112119
conn.queryId++
113120
message.Id = conn.queryId

0 commit comments

Comments
 (0)