Use chan struct{} instead

* Similar to a77ae6b771.
This commit is contained in:
Arlo Breault 2016-01-19 13:41:19 -08:00
parent e4e068640f
commit dcb901e408

View file

@ -100,12 +100,12 @@ func datachannelHandler(conn *webRTCConn) {
} }
// Create a PeerConnection from an SDP offer. Blocks until the gathering of ICE // Create a PeerConnection from an SDP offer. Blocks until the gathering of ICE
// candidates is complete and and answer is available in LocalDescription. // candidates is complete and the answer is available in LocalDescription.
// Installs an OnDataChannel callback that creates a webRTCConn and passes it to // Installs an OnDataChannel callback that creates a webRTCConn and passes it to
// datachannelHandler. // datachannelHandler.
func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.Configuration) (*webrtc.PeerConnection, error) { func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.Configuration) (*webrtc.PeerConnection, error) {
errChan := make(chan error) errChan := make(chan error)
answerChan := make(chan *webrtc.SessionDescription) answerChan := make(chan struct{})
pc, err := webrtc.NewPeerConnection(config) pc, err := webrtc.NewPeerConnection(config)
if err != nil { if err != nil {
@ -115,7 +115,7 @@ func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.
panic("OnNegotiationNeeded") panic("OnNegotiationNeeded")
} }
pc.OnIceComplete = func() { pc.OnIceComplete = func() {
answerChan <- pc.LocalDescription() answerChan <- struct{}{}
} }
pc.OnDataChannel = func(dc *data.Channel) { pc.OnDataChannel = func(dc *data.Channel) {
log.Println("OnDataChannel") log.Println("OnDataChannel")
@ -170,7 +170,11 @@ func makePeerConnectionFromOffer(sdp *webrtc.SessionDescription, config *webrtc.
case err = <-errChan: case err = <-errChan:
pc.Close() pc.Close()
return nil, err return nil, err
case <-answerChan: case _, ok := <-answerChan:
if !ok {
pc.Close()
return nil, fmt.Errorf("Failed gathering ICE candidates.")
}
} }
return pc, nil return pc, nil