diff --git a/client/internal/peer/worker_relay.go b/client/internal/peer/worker_relay.go index 138f4aeae..0e341ed14 100644 --- a/client/internal/peer/worker_relay.go +++ b/client/internal/peer/worker_relay.go @@ -63,10 +63,8 @@ func (w *WorkerRelay) OnNewOffer(remoteOfferAnswer *OfferAnswer) { srv := w.preferredRelayServer(currentRelayAddress, remoteOfferAnswer.RelaySrvAddress) - w.ctx, w.ctxCancel = context.WithCancel(w.parentCtx) relayedConn, err := w.relayManager.OpenConn(srv, w.config.Key, w.disconnected) if err != nil { - w.ctxCancel() // todo handle all type errors if errors.Is(err, relayClient.ErrConnAlreadyExists) { w.log.Infof("do not need to reopen relay connection") @@ -76,6 +74,8 @@ func (w *WorkerRelay) OnNewOffer(remoteOfferAnswer *OfferAnswer) { return } + w.ctx, w.ctxCancel = context.WithCancel(w.parentCtx) + go w.wgStateCheck(relayedConn) w.log.Debugf("Relay connection established with %s", srv)