mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 20:11:19 -04:00
parent
e4e068640f
commit
dcb901e408
1 changed files with 8 additions and 4 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue