Skip to content

Commit 111c6a1

Browse files
committed
chore(pkg/dot): revert to use tls.Client and finer steps
- TCP dial, then wrap connection with TLS and finally run TLS handshake - two distinct errors: tcp dial error and tls handshake error - change: metric label can be two distinct errors "dial error" and "handshake error" instead of a single "error"
1 parent 35756b6 commit 111c6a1

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

pkg/dot/dialer.go

+16-10
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,26 @@ func (d *Dialer) Dial(ctx context.Context, _, _ string) (
5151
serverName, serverAddress := pickNameAddress(d.picker,
5252
d.servers, d.ipv6)
5353

54-
tlsDialer := tls.Dialer{
55-
NetDialer: d.netDialer,
56-
Config: &tls.Config{
57-
MinVersion: tls.VersionTLS12,
58-
ServerName: serverName,
59-
},
54+
conn, err = d.netDialer.DialContext(ctx, "tcp", serverAddress)
55+
if err != nil {
56+
d.metrics.DoTDialInc(serverName, serverAddress, "dial error")
57+
return nil, fmt.Errorf("dialing tcp %s: %w", serverAddress, err)
6058
}
61-
conn, err = tlsDialer.DialContext(ctx, "tcp", serverAddress)
59+
60+
tlsConfig := &tls.Config{
61+
MinVersion: tls.VersionTLS12,
62+
ServerName: serverName,
63+
}
64+
tlsConn := tls.Client(conn, tlsConfig)
65+
66+
err = tlsConn.HandshakeContext(ctx)
6267
if err != nil {
63-
d.metrics.DoTDialInc(serverName, serverAddress, "error")
64-
return nil, err
68+
d.metrics.DoTDialInc(serverName, serverAddress, "handshake error")
69+
return nil, fmt.Errorf("running TLS handshake with %s (%s): %w",
70+
serverAddress, serverName, err)
6571
}
6672
d.metrics.DoTDialInc(serverName, serverAddress, "success")
67-
return conn, nil
73+
return tlsConn, nil
6874
}
6975

7076
func pickNameAddress(picker *picker.Picker, servers []provider.DoTServer,

0 commit comments

Comments
 (0)