From 978b1e9c09b8b4f9a0c67907afcaf5ec138a56ea Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Wed, 8 Apr 2026 18:15:34 +0530 Subject: [PATCH] fix: use DisableCloseByDTLS, close and recreate PCs on retry --- engine.go | 20 ++++++++++---------- transport.go | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/engine.go b/engine.go index 8bad49f3..af5ab564 100644 --- a/engine.go +++ b/engine.go @@ -321,19 +321,19 @@ func (e *RTCEngine) configure( } if e.publisher != nil { - setConfiguration(e.publisher, configuration) - } else { - if err := e.createPublisherPCLocked(configuration); err != nil { - return err - } + e.publisher.Close() + e.publisher = nil + } + if err := e.createPublisherPCLocked(configuration); err != nil { + return err } if e.subscriber != nil { - setConfiguration(e.subscriber, configuration) - } else { - if err := e.createSubscriberPCLocked(configuration); err != nil { - return err - } + e.subscriber.Close() + e.subscriber = nil + } + if err := e.createSubscriberPCLocked(configuration); err != nil { + return err } return nil diff --git a/transport.go b/transport.go index 95fd9a72..daf095de 100644 --- a/transport.go +++ b/transport.go @@ -213,6 +213,7 @@ func NewPCTransport(params PCTransportParams) (*PCTransport, error) { if len(params.DTLSEllipticCurves) > 0 { se.SetDTLSEllipticCurves(params.DTLSEllipticCurves...) } + se.DisableCloseByDTLS(true) se.SetDTLSRetransmissionInterval(dtlsRetransmissionInterval) se.SetICETimeouts(iceDisconnectedTimeout, iceFailedTimeout, iceKeepaliveInterval) lf := pionlogger.NewLoggerFactory(logger)