From b4efbe21a137dd013cdea0d46a60471edbd93d43 Mon Sep 17 00:00:00 2001 From: Raja Subramanian Date: Thu, 31 Aug 2023 23:44:11 +0530 Subject: [PATCH] Log data channel close and errors. (#2025) --- pkg/rtc/transport.go | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/pkg/rtc/transport.go b/pkg/rtc/transport.go index b249fd835..fc13fe314 100644 --- a/pkg/rtc/transport.go +++ b/pkg/rtc/transport.go @@ -704,9 +704,9 @@ func (t *PCTransport) maybeNotifyFullyEstablished() { func (t *PCTransport) isFullyEstablished() bool { t.lock.RLock() - fullyEstablished := t.reliableDCOpened && t.lossyDCOpened && !t.connectedAt.IsZero() - t.lock.RUnlock() - return fullyEstablished + defer t.lock.RUnlock() + + return t.reliableDCOpened && t.lossyDCOpened && !t.connectedAt.IsZero() } func (t *PCTransport) SetPreferTCP(preferTCP bool) { @@ -813,22 +813,27 @@ func (t *PCTransport) CreateDataChannel(label string, dci *webrtc.DataChannelIni return err } - reliableDCReadyHandler := func() { - t.params.Logger.Debugw("reliable data channel open") + dcReadyHandler := func() { t.lock.Lock() - t.reliableDCOpened = true + switch dc.Label() { + case ReliableDataChannel: + t.reliableDCOpened = true + + case LossyDataChannel: + t.lossyDCOpened = true + } t.lock.Unlock() + t.params.Logger.Debugw(dc.Label() + " data channel open") t.maybeNotifyFullyEstablished() } - lossyDCReadyHanlder := func() { - t.params.Logger.Debugw("lossy data channel open") - t.lock.Lock() - t.lossyDCOpened = true - t.lock.Unlock() + dcCloseHandler := func() { + t.params.Logger.Infow(dc.Label() + " data channel close") + } - t.maybeNotifyFullyEstablished() + dcErrorHandler := func(err error) { + t.params.Logger.Errorw(dc.Label()+" data channel close", err) } t.lock.Lock() @@ -836,17 +841,21 @@ func (t *PCTransport) CreateDataChannel(label string, dci *webrtc.DataChannelIni case ReliableDataChannel: t.reliableDC = dc if t.params.DirectionConfig.StrictACKs { - t.reliableDC.OnOpen(reliableDCReadyHandler) + t.reliableDC.OnOpen(dcReadyHandler) } else { - t.reliableDC.OnDial(reliableDCReadyHandler) + t.reliableDC.OnDial(dcReadyHandler) } + t.reliableDC.OnClose(dcCloseHandler) + t.reliableDC.OnError(dcErrorHandler) case LossyDataChannel: t.lossyDC = dc if t.params.DirectionConfig.StrictACKs { - t.lossyDC.OnOpen(lossyDCReadyHanlder) + t.lossyDC.OnOpen(dcReadyHandler) } else { - t.lossyDC.OnDial(lossyDCReadyHanlder) + t.lossyDC.OnDial(dcReadyHandler) } + t.lossyDC.OnClose(dcCloseHandler) + t.lossyDC.OnError(dcErrorHandler) default: t.params.Logger.Errorw("unknown data channel label", nil, "label", dc.Label()) }