From af15f211d0edb04e66aa68b04881955ba0df86fb Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Thu, 3 Oct 2024 16:36:47 +0300 Subject: [PATCH] Forward new disconnect reasons for SIP. (#3056) --- go.mod | 2 +- go.sum | 4 ++-- pkg/rtc/signalhandler.go | 13 +++++++++++-- pkg/rtc/types/interfaces.go | 10 ++++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 60cf8b8b1..704c0f0d3 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,7 @@ require ( github.com/jxskiss/base62 v1.1.0 github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 github.com/livekit/mediatransportutil v0.0.0-20240730083616-559fa5ece598 - github.com/livekit/protocol v1.23.1-0.20241003052959-b216a9275d12 + github.com/livekit/protocol v1.23.1-0.20241003084409-2406243b2f49 github.com/livekit/psrpc v0.6.1-0.20240924010758-9f0a4268a3b9 github.com/mackerelio/go-osstat v0.2.5 github.com/magefile/mage v1.15.0 diff --git a/go.sum b/go.sum index baff4dde1..3bb6cfb5c 100644 --- a/go.sum +++ b/go.sum @@ -165,8 +165,8 @@ github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1 h1:jm09419p0lqTkD github.com/livekit/mageutil v0.0.0-20230125210925-54e8a70427c1/go.mod h1:Rs3MhFwutWhGwmY1VQsygw28z5bWcnEYmS1OG9OxjOQ= github.com/livekit/mediatransportutil v0.0.0-20240730083616-559fa5ece598 h1:yLlkHk2feSLHstD9n4VKg7YEBR4rLODTI4WE8gNBEnQ= github.com/livekit/mediatransportutil v0.0.0-20240730083616-559fa5ece598/go.mod h1:jwKUCmObuiEDH0iiuJHaGMXwRs3RjrB4G6qqgkr/5oE= -github.com/livekit/protocol v1.23.1-0.20241003052959-b216a9275d12 h1:qpPbhqJmNAoNeO39MCmmXqOrd1F8skmtT7xq/pfcVrM= -github.com/livekit/protocol v1.23.1-0.20241003052959-b216a9275d12/go.mod h1:nxRzmQBKSYK64gqr7ABWwt78hvrgiO2wYuCojRYb7Gs= +github.com/livekit/protocol v1.23.1-0.20241003084409-2406243b2f49 h1:mk33tsjwZM8czksJbAj+xQfPfjnPo/RcGUYJLLfltOY= +github.com/livekit/protocol v1.23.1-0.20241003084409-2406243b2f49/go.mod h1:nxRzmQBKSYK64gqr7ABWwt78hvrgiO2wYuCojRYb7Gs= github.com/livekit/psrpc v0.6.1-0.20240924010758-9f0a4268a3b9 h1:33oBjGpVD9tYkDXQU42tnHl8eCX9G6PVUToBVuCUyOs= github.com/livekit/psrpc v0.6.1-0.20240924010758-9f0a4268a3b9/go.mod h1:CQUBSPfYYAaevg1TNCc6/aYsa8DJH4jSRFdCeSZk5u0= github.com/mackerelio/go-osstat v0.2.5 h1:+MqTbZUhoIt4m8qzkVoXUJg1EuifwlAJSk4Yl2GXh+o= diff --git a/pkg/rtc/signalhandler.go b/pkg/rtc/signalhandler.go index bf2834a9d..35ea7034b 100644 --- a/pkg/rtc/signalhandler.go +++ b/pkg/rtc/signalhandler.go @@ -62,8 +62,17 @@ func HandleParticipantSignal(room types.Room, participant types.LocalParticipant } case *livekit.SignalRequest_Leave: - pLogger.Debugw("client leaving room") - room.RemoveParticipant(participant.Identity(), participant.ID(), types.ParticipantCloseReasonClientRequestLeave) + reason := types.ParticipantCloseReasonClientRequestLeave + switch msg.Leave.Reason { + case livekit.DisconnectReason_CLIENT_INITIATED: + reason = types.ParticipantCloseReasonClientRequestLeave + case livekit.DisconnectReason_USER_UNAVAILABLE: + reason = types.ParticipantCloseReasonUserUnavailable + case livekit.DisconnectReason_USER_REJECTED: + reason = types.ParticipantCloseReasonUserRejected + } + pLogger.Debugw("client leaving room", "reason", reason) + room.RemoveParticipant(participant.Identity(), participant.ID(), reason) case *livekit.SignalRequest_SubscriptionPermission: err := room.UpdateSubscriptionPermission(participant, msg.SubscriptionPermission) diff --git a/pkg/rtc/types/interfaces.go b/pkg/rtc/types/interfaces.go index 60fe3fb7a..4cc86e6b4 100644 --- a/pkg/rtc/types/interfaces.go +++ b/pkg/rtc/types/interfaces.go @@ -108,6 +108,8 @@ const ( ParticipantCloseReasonMigrateCodecMismatch ParticipantCloseReasonSignalSourceClose ParticipantCloseReasonRoomClosed + ParticipantCloseReasonUserUnavailable + ParticipantCloseReasonUserRejected ) func (p ParticipantCloseReason) String() string { @@ -162,6 +164,10 @@ func (p ParticipantCloseReason) String() string { return "SIGNAL_SOURCE_CLOSE" case ParticipantCloseReasonRoomClosed: return "ROOM_CLOSED" + case ParticipantCloseReasonUserUnavailable: + return "USER_UNAVAILABLE" + case ParticipantCloseReasonUserRejected: + return "USER_REJECTED" default: return fmt.Sprintf("%d", int(p)) } @@ -194,6 +200,10 @@ func (p ParticipantCloseReason) ToDisconnectReason() livekit.DisconnectReason { return livekit.DisconnectReason_SIGNAL_CLOSE case ParticipantCloseReasonRoomClosed: return livekit.DisconnectReason_ROOM_CLOSED + case ParticipantCloseReasonUserUnavailable: + return livekit.DisconnectReason_USER_UNAVAILABLE + case ParticipantCloseReasonUserRejected: + return livekit.DisconnectReason_USER_REJECTED default: // the other types will map to unknown reason return livekit.DisconnectReason_UNKNOWN_REASON