diff --git a/pkg/service/signal.go b/pkg/service/signal.go index 6e5a2d02f..235c53a11 100644 --- a/pkg/service/signal.go +++ b/pkg/service/signal.go @@ -16,6 +16,7 @@ package service import ( "context" + "time" "github.com/pkg/errors" "google.golang.org/protobuf/proto" @@ -131,9 +132,17 @@ type signalService struct { } func (r *signalService) RelaySignal(stream psrpc.ServerStream[*rpc.RelaySignalResponse, *rpc.RelaySignalRequest]) (err error) { - req, ok := <-stream.Channel() - if !ok { - return nil + var req *rpc.RelaySignalRequest + var ok bool + select { + case req, ok = <-stream.Channel(): + if !ok { + return nil + } + case <-stream.Context().Done(): + return stream.Context().Err() + case <-time.After(r.config.RetryTimeout): + return errors.New("timeout waiting for start session") } ss := req.StartSession