aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/http/server.go
diff options
context:
space:
mode:
authorAdam Langley <agl@golang.org>2011-10-18 12:59:32 -0400
committerAdam Langley <agl@golang.org>2011-10-18 12:59:32 -0400
commit9d99d52fcb898433d58c861bd942b2caec22c16f (patch)
tree7dd540287a1ebf890f89e559bb993c8c3b154d54 /src/pkg/http/server.go
parent7bc4f8de0fc91b209265f797fd20820914f5baaa (diff)
downloadgo-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.go5
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()
}