@@ -30,12 +30,12 @@ var errEdgeConnectionClosed = fmt.Errorf("connection with edge closed")
3030// HTTP2Connection represents a net.Conn that uses HTTP2 frames to proxy traffic from the edge to cloudflared on the
3131// origin.
3232type HTTP2Connection struct {
33- conn net.Conn
34- server * http2.Server
35- configManager ConfigManager
36- connOptions * tunnelpogs.ConnectionOptions
37- observer * Observer
38- connIndex uint8
33+ conn net.Conn
34+ server * http2.Server
35+ orchestrator Orchestrator
36+ connOptions * tunnelpogs.ConnectionOptions
37+ observer * Observer
38+ connIndex uint8
3939 // newRPCClientFunc allows us to mock RPCs during testing
4040 newRPCClientFunc func (context.Context , io.ReadWriteCloser , * zerolog.Logger ) NamedTunnelRPCClient
4141
@@ -49,7 +49,7 @@ type HTTP2Connection struct {
4949// NewHTTP2Connection returns a new instance of HTTP2Connection.
5050func NewHTTP2Connection (
5151 conn net.Conn ,
52- configManager ConfigManager ,
52+ orchestrator Orchestrator ,
5353 connOptions * tunnelpogs.ConnectionOptions ,
5454 observer * Observer ,
5555 connIndex uint8 ,
@@ -61,7 +61,7 @@ func NewHTTP2Connection(
6161 server : & http2.Server {
6262 MaxConcurrentStreams : MaxConcurrentStreams ,
6363 },
64- configManager : configManager ,
64+ orchestrator : orchestrator ,
6565 connOptions : connOptions ,
6666 observer : observer ,
6767 connIndex : connIndex ,
@@ -106,6 +106,12 @@ func (c *HTTP2Connection) ServeHTTP(w http.ResponseWriter, r *http.Request) {
106106 return
107107 }
108108
109+ originProxy , err := c .orchestrator .GetOriginProxy ()
110+ if err != nil {
111+ c .observer .log .Error ().Msg (err .Error ())
112+ return
113+ }
114+
109115 switch connType {
110116 case TypeControlStream :
111117 if err := c .controlStreamHandler .ServeControlStream (r .Context (), respWriter , c .connOptions ); err != nil {
@@ -116,7 +122,7 @@ func (c *HTTP2Connection) ServeHTTP(w http.ResponseWriter, r *http.Request) {
116122
117123 case TypeWebsocket , TypeHTTP :
118124 stripWebsocketUpgradeHeader (r )
119- if err := c . configManager . GetOriginProxy () .ProxyHTTP (respWriter , r , connType == TypeWebsocket ); err != nil {
125+ if err := originProxy .ProxyHTTP (respWriter , r , connType == TypeWebsocket ); err != nil {
120126 err := fmt .Errorf ("Failed to proxy HTTP: %w" , err )
121127 c .log .Error ().Err (err )
122128 respWriter .WriteErrorResponse ()
@@ -131,7 +137,7 @@ func (c *HTTP2Connection) ServeHTTP(w http.ResponseWriter, r *http.Request) {
131137 }
132138
133139 rws := NewHTTPResponseReadWriterAcker (respWriter , r )
134- if err := c . configManager . GetOriginProxy () .ProxyTCP (r .Context (), rws , & TCPRequest {
140+ if err := originProxy .ProxyTCP (r .Context (), rws , & TCPRequest {
135141 Dest : host ,
136142 CFRay : FindCfRayHeader (r ),
137143 LBProbe : IsLBProbeRequest (r ),
0 commit comments