[tor-commits] [snowflake/master] Stop using OnIceComplete in server-webrtc

arlo at torproject.org arlo at torproject.org
Tue May 21 18:39:47 UTC 2019


commit d7676d2b9e45c957bf39ea2d5662996aeab5b4de
Author: Arlo Breault <arlolra at gmail.com>
Date:   Tue May 14 16:36:27 2019 -0400

    Stop using OnIceComplete in server-webrtc
    
    Similar to c28c8ca for proxy-goc
---
 server-webrtc/snowflake.go | 40 +++++++++++++---------------------------
 1 file changed, 13 insertions(+), 27 deletions(-)

diff --git a/server-webrtc/snowflake.go b/server-webrtc/snowflake.go
index be9f012..5923d6b 100644
--- a/server-webrtc/snowflake.go
+++ b/server-webrtc/snowflake.go
@@ -113,9 +113,6 @@ func datachannelHandler(conn *webRTCConn) {
 // Installs an OnDataChannel callback that creates a webRTCConn and passes it to
 // datachannelHandler.
 func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.Configuration) (*webrtc.PeerConnection, error) {
-	errChan := make(chan error)
-	answerChan := make(chan struct{})
-
 	pc, err := webrtc.NewPeerConnection(config)
 	if err != nil {
 		return nil, fmt.Errorf("accept: NewPeerConnection: %s", err)
@@ -123,9 +120,6 @@ func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.
 	pc.OnNegotiationNeeded = func() {
 		panic("OnNegotiationNeeded")
 	}
-	pc.OnIceComplete = func() {
-		answerChan <- struct{}{}
-	}
 	pc.OnDataChannel = func(dc *webrtc.DataChannel) {
 		log.Println("OnDataChannel")
 
@@ -164,30 +158,22 @@ func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.
 	}
 	log.Println("sdp offer successfully received.")
 
-	go func() {
-		log.Println("Generating answer...")
-		answer, err := pc.CreateAnswer() // blocking
-		if err != nil {
-			errChan <- err
-			return
-		}
-		err = pc.SetLocalDescription(answer)
-		if err != nil {
-			errChan <- err
-			return
-		}
-	}()
+	log.Println("Generating answer...")
+	answer, err := pc.CreateAnswer()
+	if err != nil {
+		pc.Destroy()
+		return nil, err
+	}
+
+	if answer == nil {
+		pc.Destroy()
+		return nil, fmt.Errorf("Failed gathering ICE candidates.")
+	}
 
-	// Wait until answer is ready.
-	select {
-	case err = <-errChan:
+	err = pc.SetLocalDescription(answer)
+	if err != nil {
 		pc.Destroy()
 		return nil, err
-	case _, ok := <-answerChan:
-		if !ok {
-			pc.Destroy()
-			return nil, fmt.Errorf("Failed gathering ICE candidates.")
-		}
 	}
 
 	return pc, nil





More information about the tor-commits mailing list