Skip to content

Commit 3ddb4b3

Browse files
committed
fix: h2c fix
1 parent c62b25f commit 3ddb4b3

File tree

3 files changed

+13
-14
lines changed

3 files changed

+13
-14
lines changed

example/cmd/example/main_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ func TestAll(t *testing.T) {
3737
} {
3838
t.Run(fmt.Sprintf("serve http/%d", 2-i), func(t *testing.T) {
3939
c := &example.Client{
40-
Endpoint: srv.URL,
41-
SupportH2C: i == 0,
40+
Endpoint: srv.URL,
41+
UseH2c: i == 0,
4242
}
4343

4444
ctx := c.InjectContext(context.Background())

pkg/courierhttp/client/client.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ func (h *httpTransportFunc) RoundTrip(request *http.Request) (*http.Response, er
5050
}
5151

5252
type Client struct {
53-
Endpoint string `flag:""`
54-
SupportH2C bool `flag:",omitzero"`
53+
Endpoint string `flag:""`
54+
UseH2c bool `flag:",omitzero"`
5555

5656
NewError func() error
5757
HttpTransports []HttpTransport
@@ -79,8 +79,8 @@ func (c *Client) Do(ctx context.Context, req any, metas ...courier.Metadata) cou
7979
httpClient.Transport = reasonableRoundTripper
8080
}
8181

82-
if c.SupportH2C {
83-
httpClient.Transport = UpgradeToSupportH2c(httpClient.Transport)
82+
if c.UseH2c {
83+
httpClient.Transport = convertTransportForH2c(httpClient.Transport)
8484
}
8585

8686
httpClient.Transport = WithHttpTransports(c.HttpTransports...)(httpClient.Transport)

pkg/courierhttp/client/http_default.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,17 +91,16 @@ func GetShortConnClientContext(ctx context.Context, httpTransports ...HttpTransp
9191
return &http.Client{Transport: WithHttpTransports(httpTransports...)(t)}
9292
}
9393

94-
func UpgradeToSupportH2c(t http.RoundTripper) http.RoundTripper {
94+
func convertTransportForH2c(t http.RoundTripper) http.RoundTripper {
9595
if t1, ok := t.(*http.Transport); ok {
9696
if !t1.DisableKeepAlives {
97-
if t2, err := http2.ConfigureTransports(t1); err == nil {
98-
t2.AllowHTTP = true
99-
t2.DialTLSContext = func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) {
97+
return &http2.Transport{
98+
DialTLSContext: func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) {
10099
return t1.DialContext(ctx, network, addr)
101-
}
102-
t2.ConnPool = nil
103-
104-
return t2
100+
},
101+
IdleConnTimeout: t1.IdleConnTimeout,
102+
ReadIdleTimeout: t1.ResponseHeaderTimeout,
103+
AllowHTTP: true,
105104
}
106105
}
107106
}

0 commit comments

Comments
 (0)