TUN-4970: Only default to http2 for warp-routing if protocol is h2mux

This commit is contained in:
Sudarsan Reddy 2021-08-26 10:20:10 +01:00
parent 836149a5b0
commit 1da4fbbe0b
1 changed files with 12 additions and 6 deletions

View File

@ -179,10 +179,16 @@ func NewProtocolSelector(
}, nil }, nil
} }
// warp routing can only be served over http2 connections // warp routing cannot be served over h2mux connections
if warpRoutingEnabled { if warpRoutingEnabled {
if protocolFlag == H2mux.String() { if protocolFlag == H2mux.String() {
log.Warn().Msg("Warp routing is only supported by http2 protocol. Upgrading protocol to http2") log.Warn().Msg("Warp routing is not supported in h2mux protocol. Upgrading to http2 to allow it.")
}
if protocolFlag == QUIC.String() {
return &staticProtocolSelector{
current: QUIC,
}, nil
} }
return &staticProtocolSelector{ return &staticProtocolSelector{
current: HTTP2, current: HTTP2,
@ -195,6 +201,10 @@ func NewProtocolSelector(
}, nil }, nil
} }
if protocolFlag == QUIC.String() {
return newAutoProtocolSelector(QUIC, explicitHTTP2FallbackThreshold, fetchFunc, ttl, log), nil
}
http2Percentage, err := fetchFunc() http2Percentage, err := fetchFunc()
if err != nil { if err != nil {
log.Err(err).Msg("Unable to lookup protocol. Defaulting to `http2`. If this fails, you can set `--protocol h2mux` in your cloudflared command.") log.Err(err).Msg("Unable to lookup protocol. Defaulting to `http2`. If this fails, you can set `--protocol h2mux` in your cloudflared command.")
@ -209,10 +219,6 @@ func NewProtocolSelector(
return newAutoProtocolSelector(HTTP2, explicitHTTP2FallbackThreshold, fetchFunc, ttl, log), nil return newAutoProtocolSelector(HTTP2, explicitHTTP2FallbackThreshold, fetchFunc, ttl, log), nil
} }
if protocolFlag == QUIC.String() {
return newAutoProtocolSelector(QUIC, explicitHTTP2FallbackThreshold, fetchFunc, ttl, log), nil
}
if protocolFlag != autoSelectFlag { if protocolFlag != autoSelectFlag {
return nil, fmt.Errorf("Unknown protocol %s, %s", protocolFlag, AvailableProtocolFlagMessage) return nil, fmt.Errorf("Unknown protocol %s, %s", protocolFlag, AvailableProtocolFlagMessage)
} }