]> Cypherpunks repositories - gostls13.git/commit
crypto/tls: fix deadlock when Read and Close called concurrently
authorMinaev Mike <minaev.mike@gmail.com>
Fri, 26 Jan 2018 09:17:46 +0000 (09:17 +0000)
committerFilippo Valsorda <filippo@golang.org>
Wed, 25 Jul 2018 23:53:54 +0000 (23:53 +0000)
commite5b13401c6b19f58a8439f1019a80fe540c0c687
tree763b0942f7a4bf59d4c398f162cc1347d8c1018d
parent7b46867d6ed3a1b0d45b9f647bd577585d451207
crypto/tls: fix deadlock when Read and Close called concurrently

The existing implementation of TLS connection has a deadlock. It occurs
when client connects to TLS server and doesn't send data for
handshake, so server calls Close on this connection. This is because
server reads data under locked mutex, while Close method tries to
lock the same mutex.

Fixes #23518

Change-Id: I4fb0a2a770f3d911036bfd9a7da7cc41c1b27e19
Reviewed-on: https://go-review.googlesource.com/90155
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
src/crypto/tls/conn.go
src/crypto/tls/handshake_client.go
src/crypto/tls/handshake_client_test.go
src/crypto/tls/handshake_server.go
src/crypto/tls/handshake_server_test.go