@@ -60,10 +60,11 @@ type Arguments struct {
6060}
6161
6262type robotServer struct {
63- args Arguments
64- logger logging.Logger
65- registry * logging.Registry
66- conn rpc.ClientConn
63+ args Arguments
64+ logger logging.Logger
65+ registry * logging.Registry
66+ conn rpc.ClientConn
67+ signalingConn rpc.ClientConn
6768}
6869
6970func logViamEnvVariables (logger logging.Logger ) {
@@ -184,7 +185,7 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
184185 defer pprof .StopCPUProfile ()
185186 }
186187
187- var appConn rpc.ClientConn
188+ var appConn , signalingConn rpc.ClientConn
188189
189190 // Read the config from disk and use it to initialize the remote logger.
190191 cfgFromDisk , err := config .ReadLocalConfig (argsParsed .ConfigFile , logger .Sublogger ("config" ))
@@ -210,6 +211,18 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
210211 return err
211212 }
212213 defer utils .UncheckedErrorFunc (appConn .Close )
214+
215+ // if SignalingAddress is specified and different from AppAddress, create a new connection to it. Otherwise reuse appConn.
216+ if cloud .SignalingAddress != "" && cloud .SignalingAddress != cloud .AppAddress {
217+ signalingConnLogger := logger .Sublogger ("networking" ).Sublogger ("signaling_connection" )
218+ signalingConn , err = grpc .NewAppConn (ctx , cloud .SignalingAddress , cloud .Secret , cloud .ID , signalingConnLogger )
219+ if err != nil {
220+ return err
221+ }
222+ defer utils .UncheckedErrorFunc (signalingConn .Close )
223+ } else {
224+ signalingConn = appConn
225+ }
213226 }
214227
215228 // Start remote logging with config from disk.
@@ -240,10 +253,11 @@ func RunServer(ctx context.Context, args []string, _ logging.Logger) (err error)
240253 go nc .RunNetworkChecks (ctx , logger , true /* continueRunningTestDNS */ )
241254
242255 server := robotServer {
243- logger : logger ,
244- args : argsParsed ,
245- registry : registry ,
246- conn : appConn ,
256+ logger : logger ,
257+ args : argsParsed ,
258+ registry : registry ,
259+ conn : appConn ,
260+ signalingConn : signalingConn ,
247261 }
248262
249263 // Run the server with remote logging enabled.
@@ -290,7 +304,9 @@ func (s *robotServer) createWebOptions(cfg *config.Config) (weboptions.Options,
290304 if cfg .Cloud != nil && s .args .AllowInsecureCreds {
291305 options .SignalingDialOpts = append (options .SignalingDialOpts , rpc .WithAllowInsecureWithCredentialsDowngrade ())
292306 }
293- options .SignalingDialOpts = append (options .SignalingDialOpts , rpc .WithSignalingConn (s .conn ))
307+ // options.SignalingAddress is set in config processing
308+ // signalingConn is a separate connection if SignalingAddress and AppAddress differ, otherwise it points to s.conn
309+ options .SignalingDialOpts = append (options .SignalingDialOpts , rpc .WithSignalingConn (s .signalingConn ))
294310
295311 if len (options .Auth .Handlers ) == 0 {
296312 host , _ , err := net .SplitHostPort (cfg .Network .BindAddress )
0 commit comments