[tor-commits] [snowflake/master] Restore check for nil writePipe in WebRTCPeer.Close.

dcf at torproject.org dcf at torproject.org
Tue Apr 28 17:47:45 UTC 2020


commit 72cfb96edeb7c9a3c93d38539bc31a51e30dbe8d
Author: David Fifield <david at bamsoftware.com>
Date:   Tue Apr 28 11:33:09 2020 -0600

    Restore check for nil writePipe in WebRTCPeer.Close.
    
    I removed this check in 047d3214bfb46de07e5d9f223e4fb1ba24584c8a because
    NewWebRTCPeer always initializes writePipe, and it is never reset to
    nil. However tests used &WebRTCPeer{} which bypasses NewWebRTCPeer and
    leaves writePipe set to nil.
    
    https://bugs.torproject.org/34049#comment:3
    https://bugs.torproject.org/34050
---
 client/lib/webrtc.go | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/client/lib/webrtc.go b/client/lib/webrtc.go
index edc8ab4..23cb3e1 100644
--- a/client/lib/webrtc.go
+++ b/client/lib/webrtc.go
@@ -236,7 +236,9 @@ func exchangeSDP(broker *BrokerChannel, offer *webrtc.SessionDescription) *webrt
 // Close all channels and transports
 func (c *WebRTCPeer) cleanup() {
 	// Close this side of the SOCKS pipe.
-	c.writePipe.Close()
+	if c.writePipe != nil { // c.writePipe can be nil in tests.
+		c.writePipe.Close()
+	}
 	if nil != c.transport {
 		log.Printf("WebRTC: closing DataChannel")
 		c.transport.Close()



More information about the tor-commits mailing list