Skip to content

Commit 1119af8

Browse files
committed
net/http: update bundled x/net/http2 for httptrace changes
Updates x/net/http2 to 3b99394 for golang.org/cl/23205 And associated tests. Fixes #12580 Change-Id: I1f4b59267b453d241f2afaa315b7fe10d477e52d Reviewed-on: https://go-review.googlesource.com/23206 Reviewed-by: Andrew Gerrand <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 4d2ac54 commit 1119af8

File tree

4 files changed

+87
-17
lines changed

4 files changed

+87
-17
lines changed

src/net/http/clientserver_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ func (t *clientServerTest) close() {
4444
t.ts.Close()
4545
}
4646

47+
func (t *clientServerTest) scheme() string {
48+
if t.h2 {
49+
return "https"
50+
}
51+
return "http"
52+
}
53+
4754
const (
4855
h1Mode = false
4956
h2Mode = true

src/net/http/h2_bundle.go

Lines changed: 58 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/net/http/httptrace/trace.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ type ClientTrace struct {
9090
// connection reuse is disabled via Transport.DisableKeepAlives.
9191
// PutIdleConn is called before the caller's Response.Body.Close
9292
// call returns.
93+
// For HTTP/2, this hook is not currently used.
9394
PutIdleConn func(err error)
9495

9596
// GotFirstResponseByte is called when the first byte of the response

src/net/http/transport_test.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3193,26 +3193,26 @@ func TestTransportResponseHeaderLength(t *testing.T) {
31933193
}
31943194
}
31953195

3196-
func TestTransportEventTrace(t *testing.T) { testTransportEventTrace(t, false) }
3196+
func TestTransportEventTrace(t *testing.T) { testTransportEventTrace(t, h1Mode, false) }
3197+
func TestTransportEventTrace_h2(t *testing.T) { testTransportEventTrace(t, h2Mode, false) }
31973198

31983199
// test a non-nil httptrace.ClientTrace but with all hooks set to zero.
3199-
func TestTransportEventTrace_NoHooks(t *testing.T) { testTransportEventTrace(t, true) }
3200+
func TestTransportEventTrace_NoHooks(t *testing.T) { testTransportEventTrace(t, h1Mode, true) }
3201+
func TestTransportEventTrace_NoHooks_h2(t *testing.T) { testTransportEventTrace(t, h2Mode, true) }
32003202

3201-
func testTransportEventTrace(t *testing.T, noHooks bool) {
3203+
func testTransportEventTrace(t *testing.T, h2 bool, noHooks bool) {
32023204
defer afterTest(t)
32033205
const resBody = "some body"
3204-
ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) {
3206+
cst := newClientServerTest(t, h2, HandlerFunc(func(w ResponseWriter, r *Request) {
32053207
if _, err := ioutil.ReadAll(r.Body); err != nil {
32063208
t.Error(err)
32073209
}
32083210
io.WriteString(w, resBody)
32093211
}))
3210-
defer ts.Close()
3211-
tr := &Transport{
3212-
ExpectContinueTimeout: 1 * time.Second,
3212+
defer cst.close()
3213+
if !h2 {
3214+
cst.tr.ExpectContinueTimeout = 1 * time.Second
32133215
}
3214-
defer tr.CloseIdleConnections()
3215-
c := &Client{Transport: tr}
32163216

32173217
var mu sync.Mutex
32183218
var buf bytes.Buffer
@@ -3223,7 +3223,8 @@ func testTransportEventTrace(t *testing.T, noHooks bool) {
32233223
buf.WriteByte('\n')
32243224
}
32253225

3226-
ip, port, err := net.SplitHostPort(ts.Listener.Addr().String())
3226+
addrStr := cst.ts.Listener.Addr().String()
3227+
ip, port, err := net.SplitHostPort(addrStr)
32273228
if err != nil {
32283229
t.Fatal(err)
32293230
}
@@ -3237,7 +3238,7 @@ func testTransportEventTrace(t *testing.T, noHooks bool) {
32373238
return []net.IPAddr{{IP: net.ParseIP(ip)}}, nil
32383239
})
32393240

3240-
req, _ := NewRequest("POST", "http://dns-is-faked.golang:"+port, strings.NewReader("some body"))
3241+
req, _ := NewRequest("POST", cst.scheme()+"://dns-is-faked.golang:"+port, strings.NewReader("some body"))
32413242
trace := &httptrace.ClientTrace{
32423243
GetConn: func(hostPort string) { logf("Getting conn for %v ...", hostPort) },
32433244
GotConn: func(ci httptrace.GotConnInfo) { logf("got conn: %+v", ci) },
@@ -3263,7 +3264,7 @@ func testTransportEventTrace(t *testing.T, noHooks bool) {
32633264
req = req.WithContext(httptrace.WithClientTrace(ctx, trace))
32643265

32653266
req.Header.Set("Expect", "100-continue")
3266-
res, err := c.Do(req)
3267+
res, err := cst.c.Do(req)
32673268
if err != nil {
32683269
t.Fatal(err)
32693270
}
@@ -3292,14 +3293,17 @@ func testTransportEventTrace(t *testing.T, noHooks bool) {
32923293
wantSub("Getting conn for dns-is-faked.golang:" + port)
32933294
wantSub("DNS start: {Host:dns-is-faked.golang}")
32943295
wantSub("DNS done: {Addrs:[{IP:" + ip + " Zone:}] Err:<nil> Coalesced:false}")
3295-
wantSub("Connecting to tcp " + ts.Listener.Addr().String())
3296-
wantSub("connected to tcp " + ts.Listener.Addr().String() + " = <nil>")
3296+
wantSub("Connecting to tcp " + addrStr)
3297+
wantSub("connected to tcp " + addrStr + " = <nil>")
32973298
wantSub("Reused:false WasIdle:false IdleTime:0s")
32983299
wantSub("first response byte")
3299-
wantSub("PutIdleConn = <nil>")
3300+
if !h2 {
3301+
wantSub("PutIdleConn = <nil>")
3302+
// TODO: implement these next two for Issue 13851
3303+
wantSub("Wait100Continue")
3304+
wantSub("Got100Continue")
3305+
}
33003306
wantSub("WroteRequest: {Err:<nil>}")
3301-
wantSub("Wait100Continue")
3302-
wantSub("Got100Continue")
33033307
if strings.Contains(got, " to udp ") {
33043308
t.Errorf("should not see UDP (DNS) connections")
33053309
}

0 commit comments

Comments
 (0)