]> Cypherpunks repositories - gostls13.git/commitdiff
net/http: document CONNECT more
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 4 Jan 2018 23:36:16 +0000 (23:36 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Fri, 5 Jan 2018 00:37:27 +0000 (00:37 +0000)
Fixes #22554

Change-Id: I624f2883489a46d7162c11f489c2f0a0ec5a836f
Reviewed-on: https://go-review.googlesource.com/86277
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/http/request.go
src/net/http/transport.go

index 870af85e04a002b1fd078e71441a4d1671641c2e..c9642e55c29bda47bf38aadcf4f26e6914d7cb8b 100644 (file)
@@ -98,6 +98,10 @@ var reqWriteExcludeHeader = map[string]bool{
 type Request struct {
        // Method specifies the HTTP method (GET, POST, PUT, etc.).
        // For client requests an empty string means GET.
+       //
+       // Go's HTTP client does not support sending a request with
+       // the CONNECT method. See the documentation on Transport for
+       // details.
        Method string
 
        // URL specifies either the URI being requested (for server
index 45e3fd2eba7f309513e7ab6a75632ea36bd0c0ae..7c38ac4464db75eba87b4f3da2ba0e5bbc680ca1 100644 (file)
@@ -73,6 +73,15 @@ const DefaultMaxIdleConnsPerHost = 2
 // and how the Transport is configured. The DefaultTransport supports HTTP/2.
 // To explicitly enable HTTP/2 on a transport, use golang.org/x/net/http2
 // and call ConfigureTransport. See the package docs for more about HTTP/2.
+//
+// The Transport will send CONNECT requests to a proxy for its own use
+// when processing HTTPS requests, but Transport should generally not
+// be used to send a CONNECT request. That is, the Request passed to
+// the RoundTrip method should not have a Method of "CONNECT", as Go's
+// HTTP/1.x implementation does not support full-duplex request bodies
+// being written while the response body is streamed. Go's HTTP/2
+// implementation does support full duplex, but many CONNECT proxies speak
+// HTTP/1.x.
 type Transport struct {
        idleMu     sync.Mutex
        wantIdle   bool                                // user has requested to close all idle conns