From a723fbe455633b637703ff5b49af923b7474b0dd Mon Sep 17 00:00:00 2001 From: Tanmay Deep Sharma Date: Tue, 21 Apr 2026 18:03:52 +0700 Subject: [PATCH] chore(media-server): log PeerConnection state for both peers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ICE state alone doesn't cover DTLS handshake failures; overall PeerConnectionState does. Adding the log gives us a signal for why inbound Meta-side connections transition to closed shortly after ICE connects — useful for diagnosing the inbound-audio path. Co-Authored-By: Claude Opus 4.7 (1M context) --- enterprise/media-server/internal/peer/agent_peer.go | 4 ++++ enterprise/media-server/internal/peer/meta_peer.go | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/enterprise/media-server/internal/peer/agent_peer.go b/enterprise/media-server/internal/peer/agent_peer.go index 7aef1825d..464d00a95 100644 --- a/enterprise/media-server/internal/peer/agent_peer.go +++ b/enterprise/media-server/internal/peer/agent_peer.go @@ -162,6 +162,10 @@ func NewAgentPeer(cfg *config.Config, id string, role PeerRole, iceServers []web } }) + pc.OnConnectionStateChange(func(state webrtc.PeerConnectionState) { + slog.Info("agent peer: connection state changed", "peer_id", id, "state", state.String()) + }) + // Create an SDP offer for the agent's browser. offer, err := pc.CreateOffer(nil) if err != nil { diff --git a/enterprise/media-server/internal/peer/meta_peer.go b/enterprise/media-server/internal/peer/meta_peer.go index 9d5f46866..7544b12da 100644 --- a/enterprise/media-server/internal/peer/meta_peer.go +++ b/enterprise/media-server/internal/peer/meta_peer.go @@ -144,6 +144,16 @@ func NewMetaPeer(cfg *config.Config, sdpOffer string, iceServers []webrtc.ICESer } }) + // Log overall peer connection state (covers DTLS + ICE + signaling). + // This catches failures that don't surface via ICEConnectionState alone, + // such as DTLS handshake errors. + pc.OnConnectionStateChange(func(state webrtc.PeerConnectionState) { + slog.Info("meta peer: connection state changed", "state", state.String()) + }) + pc.OnSignalingStateChange(func(state webrtc.SignalingState) { + slog.Debug("meta peer: signaling state changed", "state", state.String()) + }) + // Perform SDP negotiation based on call direction. var sdpResult string if sdpOffer != "" {