mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
net/dnscache: don't cancel the TLS context before writing to the result channel.
Cancelling the context makes the timeout goroutine race with the write that reports a successful TLS handshake, so you can end up with a successful TLS handshake that mysteriously reports that it timed out after ~0s in flight. The context is always canceled and cleaned up as the function exits, which happens mere microseconds later, so just let function exit clean up and thereby avoid races. Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
parent
9fe5ece833
commit
a9da6b73a8
@ -457,9 +457,7 @@ func TLSDialer(fwd DialContextFunc, dnsCache *Resolver, tlsConfigBase *tls.Confi
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
go func() {
|
go func() {
|
||||||
err := tlsConn.Handshake()
|
errc <- tlsConn.Handshake()
|
||||||
handshakeTimeoutCancel()
|
|
||||||
errc <- err
|
|
||||||
}()
|
}()
|
||||||
if err := <-errc; err != nil {
|
if err := <-errc; err != nil {
|
||||||
tcpConn.Close()
|
tcpConn.Close()
|
||||||
|
Loading…
Reference in New Issue
Block a user