net/http: add response body to 413 and 400 errors

The existing serve() method returns a zero-length response body when
it encounters an error, which results in a blank page and no visible
error in browsers.

This change sends a response body explaining the error for display in browsers.

Fixes #12745

Change-Id: I9dc3b95ad88cb92c18ced51f6b52bd3b2c1b974c
Reviewed-on: https://go-review.googlesource.com/15018
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Kenny Grant 2015-09-27 14:53:18 +01:00 committed by Brad Fitzpatrick
parent 9dd81d6227
commit 4a6326e7b5

View File

@ -1339,7 +1339,7 @@ func (c *conn) serve() {
// responding to them and hanging up // responding to them and hanging up
// while they're still writing their // while they're still writing their
// request. Undefined behavior. // request. Undefined behavior.
io.WriteString(c.rwc, "HTTP/1.1 413 Request Entity Too Large\r\n\r\n") io.WriteString(c.rwc, "HTTP/1.1 413 Request Entity Too Large\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n413 Request Entity Too Large")
c.closeWriteAndWait() c.closeWriteAndWait()
break break
} else if err == io.EOF { } else if err == io.EOF {
@ -1347,7 +1347,7 @@ func (c *conn) serve() {
} else if neterr, ok := err.(net.Error); ok && neterr.Timeout() { } else if neterr, ok := err.(net.Error); ok && neterr.Timeout() {
break // Don't reply break // Don't reply
} }
io.WriteString(c.rwc, "HTTP/1.1 400 Bad Request\r\n\r\n") io.WriteString(c.rwc, "HTTP/1.1 400 Bad Request\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n400 Bad Request")
break break
} }