@@ -147,6 +147,7 @@ func (c *Conn) logger() slog.Logger {
147
147
if ! valid {
148
148
return slog.Logger {}
149
149
}
150
+
150
151
return log
151
152
}
152
153
@@ -566,11 +567,14 @@ func (c *Conn) isClosed() bool {
566
567
func (c * Conn ) CloseWithError (err error ) error {
567
568
c .closeMutex .Lock ()
568
569
defer c .closeMutex .Unlock ()
570
+
569
571
if c .isClosed () {
570
572
return c .closeError
571
573
}
572
574
573
- c .logger ().Debug (context .Background (), "closing conn with error" , slog .Error (err ))
575
+ logger := c .logger ()
576
+
577
+ logger .Debug (context .Background (), "closing conn with error" , slog .Error (err ))
574
578
if err == nil {
575
579
c .closeError = ErrClosed
576
580
} else {
@@ -588,21 +592,23 @@ func (c *Conn) CloseWithError(err error) error {
588
592
// Waiting for pion/webrtc to report closed state on both of these
589
593
// ensures no goroutine leaks.
590
594
if c .rtc .ConnectionState () != webrtc .PeerConnectionStateNew {
591
- c . logger () .Debug (context .Background (), "waiting for rtc connection close..." )
595
+ logger .Debug (context .Background (), "waiting for rtc connection close..." )
592
596
<- c .closedRTC
593
597
}
594
598
if c .rtc .ICEConnectionState () != webrtc .ICEConnectionStateNew {
595
- c . logger () .Debug (context .Background (), "waiting for ice connection close..." )
599
+ logger .Debug (context .Background (), "waiting for ice connection close..." )
596
600
<- c .closedICE
597
601
}
598
602
599
603
// Waits for all DataChannels to exit before officially labeling as closed.
600
604
// All logging, goroutines, and async functionality is cleaned up after this.
601
605
c .dcClosedWaitGroup .Wait ()
602
606
603
- c .logger ().Debug (context .Background (), "closed" )
604
607
// Disable logging!
605
608
c .loggerValue .Store (slog.Logger {})
609
+ logger .Sync ()
610
+
611
+ logger .Debug (context .Background (), "closed" )
606
612
close (c .closed )
607
613
return err
608
614
}
0 commit comments