TUN-3896: http-service and tunnelstore client use http2 transport.

- If origin services are http2 and https is the service url, http2
   transport is preferred.

   - The tunnelstore client is now upgraded to use http2.
This commit is contained in:
Sudarsan Reddy 2021-03-26 09:45:26 +00:00
parent 66da530ba3
commit 1cf6ae37eb
3 changed files with 31 additions and 5 deletions

View File

@ -1,5 +1,24 @@
**Experimental**: This is a new format for release notes. The format and availability is subject to change. **Experimental**: This is a new format for release notes. The format and availability is subject to change.
## UNRELEASED
### Backward Incompatible Changes
- none
### New Features
- HTTP/2 transport is now always chosen if origin server supports it and the service url scheme is HTTPS.
This was previously done in a best attempt manner.
### Improvements
- none
### Bug Fixes
- none
## 2021.3.3 ## 2021.3.3
### Improvements ### Improvements

View File

@ -15,6 +15,8 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"golang.org/x/net/http2"
"github.com/cloudflare/cloudflared/hello" "github.com/cloudflare/cloudflared/hello"
"github.com/cloudflare/cloudflared/ipaccess" "github.com/cloudflare/cloudflared/ipaccess"
"github.com/cloudflare/cloudflared/socks" "github.com/cloudflare/cloudflared/socks"
@ -287,6 +289,7 @@ func newHTTPTransport(service originService, cfg OriginRequestConfig, log *zerol
httpTransport.DialContext = dialContext httpTransport.DialContext = dialContext
} }
http2.ConfigureTransport(&httpTransport)
return &httpTransport, nil return &httpTransport, nil
} }

View File

@ -16,6 +16,8 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/rs/zerolog" "github.com/rs/zerolog"
"golang.org/x/net/http2"
"github.com/cloudflare/cloudflared/teamnet" "github.com/cloudflare/cloudflared/teamnet"
) )
@ -247,6 +249,11 @@ func NewRESTClient(baseURL, accountTag, zoneTag, authToken, userAgent string, lo
if err != nil { if err != nil {
return nil, errors.Wrap(err, "failed to create account level endpoint") return nil, errors.Wrap(err, "failed to create account level endpoint")
} }
httpTransport := http.Transport{
TLSHandshakeTimeout: defaultTimeout,
ResponseHeaderTimeout: defaultTimeout,
}
http2.ConfigureTransport(&httpTransport)
return &RESTClient{ return &RESTClient{
baseEndpoints: &baseEndpoints{ baseEndpoints: &baseEndpoints{
accountLevel: *accountLevelEndpoint, accountLevel: *accountLevelEndpoint,
@ -256,10 +263,7 @@ func NewRESTClient(baseURL, accountTag, zoneTag, authToken, userAgent string, lo
authToken: authToken, authToken: authToken,
userAgent: userAgent, userAgent: userAgent,
client: http.Client{ client: http.Client{
Transport: &http.Transport{ Transport: &httpTransport,
TLSHandshakeTimeout: defaultTimeout,
ResponseHeaderTimeout: defaultTimeout,
},
Timeout: defaultTimeout, Timeout: defaultTimeout,
}, },
log: log, log: log,