Commit 9f2e1efd authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

net/http/httputil: tell people not to use ClientConn and ServerConn

A very smart developer at Gophercon just asked me to help debug
a problem and I was horrified to learn that he was using httputil's
ClientConn. I forgot ClientConn and ServerConn were even included
in Go 1! They should've been deleted.

Scare people away from using them. The net/http package does
not use them and they're unused, unmaintained and untouched in
4+ years.

LGTM=r
R=r, adg
CC=golang-codereviews
https://golang.org/cl/92790043
parent 4c129c08
...@@ -31,8 +31,8 @@ var errClosed = errors.New("i/o operation on closed connection") ...@@ -31,8 +31,8 @@ var errClosed = errors.New("i/o operation on closed connection")
// i.e. requests can be read out of sync (but in the same order) while the // i.e. requests can be read out of sync (but in the same order) while the
// respective responses are sent. // respective responses are sent.
// //
// ServerConn is low-level and should not be needed by most applications. // ServerConn is low-level and old. Applications should instead use Server
// See Server. // in the net/http package.
type ServerConn struct { type ServerConn struct {
lk sync.Mutex // read-write protects the following fields lk sync.Mutex // read-write protects the following fields
c net.Conn c net.Conn
...@@ -47,6 +47,9 @@ type ServerConn struct { ...@@ -47,6 +47,9 @@ type ServerConn struct {
// NewServerConn returns a new ServerConn reading and writing c. If r is not // NewServerConn returns a new ServerConn reading and writing c. If r is not
// nil, it is the buffer to use when reading c. // nil, it is the buffer to use when reading c.
//
// ServerConn is low-level and old. Applications should instead use Server
// in the net/http package.
func NewServerConn(c net.Conn, r *bufio.Reader) *ServerConn { func NewServerConn(c net.Conn, r *bufio.Reader) *ServerConn {
if r == nil { if r == nil {
r = bufio.NewReader(c) r = bufio.NewReader(c)
...@@ -221,8 +224,8 @@ func (sc *ServerConn) Write(req *http.Request, resp *http.Response) error { ...@@ -221,8 +224,8 @@ func (sc *ServerConn) Write(req *http.Request, resp *http.Response) error {
// supports hijacking the connection calling Hijack to // supports hijacking the connection calling Hijack to
// regain control of the underlying net.Conn and deal with it as desired. // regain control of the underlying net.Conn and deal with it as desired.
// //
// ClientConn is low-level and should not be needed by most applications. // ClientConn is low-level and old. Applications should instead use
// See Client. // Client or Transport in the net/http package.
type ClientConn struct { type ClientConn struct {
lk sync.Mutex // read-write protects the following fields lk sync.Mutex // read-write protects the following fields
c net.Conn c net.Conn
...@@ -238,6 +241,9 @@ type ClientConn struct { ...@@ -238,6 +241,9 @@ type ClientConn struct {
// NewClientConn returns a new ClientConn reading and writing c. If r is not // NewClientConn returns a new ClientConn reading and writing c. If r is not
// nil, it is the buffer to use when reading c. // nil, it is the buffer to use when reading c.
//
// ClientConn is low-level and old. Applications should use Client or
// Transport in the net/http package.
func NewClientConn(c net.Conn, r *bufio.Reader) *ClientConn { func NewClientConn(c net.Conn, r *bufio.Reader) *ClientConn {
if r == nil { if r == nil {
r = bufio.NewReader(c) r = bufio.NewReader(c)
...@@ -252,6 +258,9 @@ func NewClientConn(c net.Conn, r *bufio.Reader) *ClientConn { ...@@ -252,6 +258,9 @@ func NewClientConn(c net.Conn, r *bufio.Reader) *ClientConn {
// NewProxyClientConn works like NewClientConn but writes Requests // NewProxyClientConn works like NewClientConn but writes Requests
// using Request's WriteProxy method. // using Request's WriteProxy method.
//
// New code should not use NewProxyClientConn. See Client or
// Transport in the net/http package instead.
func NewProxyClientConn(c net.Conn, r *bufio.Reader) *ClientConn { func NewProxyClientConn(c net.Conn, r *bufio.Reader) *ClientConn {
cc := NewClientConn(c, r) cc := NewClientConn(c, r)
cc.writeReq = (*http.Request).WriteProxy cc.writeReq = (*http.Request).WriteProxy
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment