]> Sergey Matveev's repositories - btrtrc.git/blobdiff - webtorrent/transport.go
Add WebRTC ICE servers config (#824)
[btrtrc.git] / webtorrent / transport.go
index 610301db2c8a71cef7007d69d7287715c5174f67..856625874c8becc00be22a6ee600d401c260b13a 100644 (file)
@@ -29,7 +29,6 @@ var (
                s.DetachDataChannels()
                return webrtc.NewAPI(webrtc.WithSettingEngine(s))
        }()
-       config              = webrtc.Configuration{ICEServers: []webrtc.ICEServer{{URLs: []string{"stun:stun.l.google.com:19302"}}}}
        newPeerConnectionMu sync.Mutex
 )
 
@@ -49,11 +48,14 @@ func (me *wrappedPeerConnection) Close() error {
        return err
 }
 
-func newPeerConnection(logger log.Logger) (*wrappedPeerConnection, error) {
+func newPeerConnection(logger log.Logger, iceServers []string) (*wrappedPeerConnection, error) {
        newPeerConnectionMu.Lock()
        defer newPeerConnectionMu.Unlock()
        ctx, span := otel.Tracer(tracerName).Start(context.Background(), "PeerConnection")
-       pc, err := api.NewPeerConnection(config)
+
+       pcConfig := webrtc.Configuration{ICEServers: []webrtc.ICEServer{{URLs: iceServers}}}
+
+       pc, err := api.NewPeerConnection(pcConfig)
        if err != nil {
                span.SetStatus(codes.Error, err.Error())
                span.RecordError(err)
@@ -99,7 +101,7 @@ func (tc *TrackerClient) newOffer(
        offer webrtc.SessionDescription,
        err error,
 ) {
-       peerConnection, err = newPeerConnection(logger)
+       peerConnection, err = newPeerConnection(logger, tc.ICEServers)
        if err != nil {
                return
        }
@@ -191,7 +193,7 @@ func (tc *TrackerClient) newAnsweringPeerConnection(
 ) (
        peerConn *wrappedPeerConnection, answer webrtc.SessionDescription, err error,
 ) {
-       peerConn, err = newPeerConnection(tc.Logger)
+       peerConn, err = newPeerConnection(tc.Logger, tc.ICEServers)
        if err != nil {
                err = fmt.Errorf("failed to create new connection: %w", err)
                return