From c850d0f34a7db9f6df54c1ca99e14e19859baaa0 Mon Sep 17 00:00:00 2001 From: Dave Cheney Date: Fri, 21 Dec 2012 15:14:38 +1100 Subject: [PATCH] net/http: simplify serve() connection close Followup to 6971049. R=bradfitz CC=golang-dev https://golang.org/cl/6970049 --- src/pkg/net/http/server.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/pkg/net/http/server.go b/src/pkg/net/http/server.go index 3303891f75..89a46f06bb 100644 --- a/src/pkg/net/http/server.go +++ b/src/pkg/net/http/server.go @@ -702,25 +702,19 @@ func (c *conn) closeWriteAndWait() { // Serve a new connection. func (c *conn) serve() { defer func() { - err := recover() - if err == nil { - return + if err := recover(); err != nil { + const size = 4096 + buf := make([]byte, size) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("http: panic serving %v: %v\n%s", c.remoteAddr, err, buf) } - - const size = 4096 - buf := make([]byte, size) - buf = buf[:runtime.Stack(buf, false)] - log.Printf("http: panic serving %v: %v\n%s", c.remoteAddr, err, buf) - - if c.rwc != nil { // may be nil if connection hijacked - c.rwc.Close() + if !c.hijacked() { + c.close() } }() - defer c.close() if tlsConn, ok := c.rwc.(*tls.Conn); ok { if err := tlsConn.Handshake(); err != nil { - c.close() return } c.tlsState = new(tls.ConnectionState) -- 2.48.1