diff --git a/pkg/service/server.go b/pkg/service/server.go index c21b98fe0..390432116 100644 --- a/pkg/service/server.go +++ b/pkg/service/server.go @@ -227,6 +227,10 @@ func (s *LivekitServer) Start() error { go s.promServer.Serve(promLn) } + if err := s.signalServer.Start(); err != nil { + return err + } + httpGroup := &errgroup.Group{} for _, ln := range listeners { l := ln diff --git a/pkg/service/signal.go b/pkg/service/signal.go index 3de03c1ae..817344914 100644 --- a/pkg/service/signal.go +++ b/pkg/service/signal.go @@ -28,6 +28,7 @@ type SessionHandler func( type SignalServer struct { server rpc.TypedSignalServer + nodeID livekit.NodeID } func NewSignalServer( @@ -47,12 +48,7 @@ func NewSignalServer( if err != nil { return nil, err } - logger.Debugw("starting relay signal server", "topic", nodeID) - if err := s.RegisterRelaySignalTopic(nodeID); err != nil { - return nil, err - } - - return &SignalServer{s}, nil + return &SignalServer{s, nodeID}, nil } func NewDefaultSignalServer( @@ -101,6 +97,11 @@ func NewDefaultSignalServer( return NewSignalServer(livekit.NodeID(currentNode.Id), currentNode.Region, bus, config, sessionHandler) } +func (s *SignalServer) Start() error { + logger.Debugw("starting relay signal server", "topic", s.nodeID) + return s.server.RegisterRelaySignalTopic(s.nodeID) +} + func (r *SignalServer) Stop() { r.server.Kill() } diff --git a/pkg/service/signal_test.go b/pkg/service/signal_test.go index 946675864..ec83c5c3e 100644 --- a/pkg/service/signal_test.go +++ b/pkg/service/signal_test.go @@ -44,7 +44,7 @@ func TestSignal(t *testing.T) { client, err := routing.NewSignalClient(livekit.NodeID("node0"), bus, cfg) require.NoError(t, err) - _, err = NewSignalServer(livekit.NodeID("node1"), "region", bus, cfg, func( + server, err := NewSignalServer(livekit.NodeID("node1"), "region", bus, cfg, func( ctx context.Context, roomName livekit.RoomName, pi routing.ParticipantInit, @@ -62,6 +62,9 @@ func TestSignal(t *testing.T) { }) require.NoError(t, err) + err = server.Start() + require.NoError(t, err) + _, reqSink, resSource, err := client.StartParticipantSignal( context.Background(), livekit.RoomName("room1"),