]> Cypherpunks repositories - gostls13.git/commit
crypto/tls: simplify the Handshake locking strategy
authorFilippo Valsorda <hi@filippo.io>
Fri, 2 Dec 2016 19:43:45 +0000 (19:43 +0000)
committerFilippo Valsorda <filippo@golang.org>
Tue, 3 Apr 2018 16:44:55 +0000 (16:44 +0000)
commitee7dd810f9ca4e63ecfc1d3044869591783b8b74
treea9059dcf60f9ca19261170661df24fa3692f58a5
parent32e6461dc63b8f2577bbd9a08a5ad06ff91d173b
crypto/tls: simplify the Handshake locking strategy

If in.Mutex is never locked by Handshake when c.handshakeComplete is
true, and since c.handshakeComplete is unset and then set back by
handleRenegotiation all under both in.Mutex and handshakeMutex, we can
significantly simplify the locking strategy by removing the sync.Cond.

See also https://groups.google.com/forum/#!topic/golang-dev/Xxiai-R_jH0
and a more complete analysis at https://go-review.googlesource.com/c/go/+/33776#message-223a3ccc819f7015cc773d214c65bad70de5dfd7

Change-Id: I6052695ece9aff9e3112c2fb176596fde8aa9cb2
Reviewed-on: https://go-review.googlesource.com/33776
Reviewed-by: Adam Langley <agl@golang.org>
src/crypto/tls/conn.go
src/crypto/tls/handshake_client.go
src/crypto/tls/handshake_server.go