From 7dc60bb1bf59394dcd05d5f8ff9046aabd9c4834 Mon Sep 17 00:00:00 2001 From: Paul Wells Date: Sun, 16 Jul 2023 13:40:53 -0700 Subject: [PATCH] start reading signal messages before session handler finishes (#1883) * start reading signal messages before session handler finishes * fix err scope --- pkg/service/signal.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/pkg/service/signal.go b/pkg/service/signal.go index c6907dadb..aa6ab5578 100644 --- a/pkg/service/signal.go +++ b/pkg/service/signal.go @@ -139,9 +139,6 @@ func (r *signalService) RelaySignal(stream psrpc.ServerStream[*rpc.RelaySignalRe "connID", ss.ConnectionId, ) - reqChan := routing.NewDefaultMessageChannel(livekit.ConnectionID(ss.ConnectionId)) - defer reqChan.Close() - sink := routing.NewSignalMessageSink(routing.SignalSinkParams[*rpc.RelaySignalResponse, *rpc.RelaySignalRequest]{ Logger: l, Stream: stream, @@ -149,6 +146,19 @@ func (r *signalService) RelaySignal(stream psrpc.ServerStream[*rpc.RelaySignalRe Writer: signalResponseMessageWriter{}, ConnectionID: livekit.ConnectionID(ss.ConnectionId), }) + reqChan := routing.NewDefaultMessageChannel(livekit.ConnectionID(ss.ConnectionId)) + + go func() { + err := routing.CopySignalStreamToMessageChannel[*rpc.RelaySignalResponse, *rpc.RelaySignalRequest]( + stream, + reqChan, + signalRequestMessageReader{}, + r.config, + ) + l.Infow("signal stream closed", "error", err) + + reqChan.Close() + }() err = r.sessionHandler(ctx, livekit.RoomName(ss.RoomName), *pi, livekit.ConnectionID(ss.ConnectionId), reqChan, sink) if err != nil { @@ -156,9 +166,7 @@ func (r *signalService) RelaySignal(stream psrpc.ServerStream[*rpc.RelaySignalRe return } - err = routing.CopySignalStreamToMessageChannel[*rpc.RelaySignalResponse, *rpc.RelaySignalRequest](stream, reqChan, signalRequestMessageReader{}, r.config) - l.Infow("signal stream closed", "error", err) - + stream.Hijack() return }