diff options
| author | Adam Langley <agl@golang.org> | 2011-10-18 12:59:32 -0400 |
|---|---|---|
| committer | Adam Langley <agl@golang.org> | 2011-10-18 12:59:32 -0400 |
| commit | 9d99d52fcb898433d58c861bd942b2caec22c16f (patch) | |
| tree | 7dd540287a1ebf890f89e559bb993c8c3b154d54 /src/pkg/http/server.go | |
| parent | 7bc4f8de0fc91b209265f797fd20820914f5baaa (diff) | |
| download | go-9d99d52fcb898433d58c861bd942b2caec22c16f.tar.xz | |
http, crypto/tls: fix read timeouts and closing.
tls.Conn.Close() didn't close the underlying connection and tried to
do a handshake in order to send the close notify alert.
http didn't look for errors from the TLS handshake.
Fixes #2281.
R=bradfitz
CC=golang-dev
https://golang.org/cl/5283045
Diffstat (limited to 'src/pkg/http/server.go')
| -rw-r--r-- | src/pkg/http/server.go | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/pkg/http/server.go b/src/pkg/http/server.go index 018be8cd3e..9792c60e7b 100644 --- a/src/pkg/http/server.go +++ b/src/pkg/http/server.go @@ -578,7 +578,10 @@ func (c *conn) serve() { }() if tlsConn, ok := c.rwc.(*tls.Conn); ok { - tlsConn.Handshake() + if err := tlsConn.Handshake(); err != nil { + c.close() + return + } c.tlsState = new(tls.ConnectionState) *c.tlsState = tlsConn.ConnectionState() } |
