aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCecylia Bocovich <cohosh@torproject.org>2023-05-30 15:30:07 -0400
committerShelikhoo <xiaokangwang@outlook.com>2023-08-24 16:33:22 +0100
commitb632c7d49cd7634eb9b58f96fb81f8f289568e9f (patch)
tree5cb8e84fbcf6c4425bcbe6a321060e0f378daca8
parent0cb2975fd84bef997800f46079006bef9792be7c (diff)
downloadsnowflake-b632c7d49cd7634eb9b58f96fb81f8f289568e9f.tar.gz
snowflake-b632c7d49cd7634eb9b58f96fb81f8f289568e9f.zip
Workaround for shadow in lieu of AF_NETLINK support
For details, see https://github.com/shadow/shadow/issues/2980
-rw-r--r--client/lib/webrtc.go7
-rw-r--r--go.mod2
2 files changed, 8 insertions, 1 deletions
diff --git a/client/lib/webrtc.go b/client/lib/webrtc.go
index 7d986d3..fedf299 100644
--- a/client/lib/webrtc.go
+++ b/client/lib/webrtc.go
@@ -12,6 +12,7 @@ import (
"time"
"github.com/pion/ice/v2"
+ "github.com/pion/transport/v2/stdnet"
"github.com/pion/webrtc/v3"
"gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/v2/common/event"
)
@@ -194,6 +195,12 @@ func (c *WebRTCPeer) preparePeerConnection(config *webrtc.Configuration) error {
var err error
s := webrtc.SettingEngine{}
s.SetICEMulticastDNSMode(ice.MulticastDNSModeDisabled)
+ // Use the SetNet setting https://pkg.go.dev/github.com/pion/webrtc/v3#SettingEngine.SetNet
+ // to get snowflake working in shadow (where the AF_NETLINK family is not implemented).
+ // These two lines of code functionally revert a new change in pion by silently ignoring
+ // when net.Interfaces() fails, rather than throwing an error
+ vnet, _ := stdnet.NewNet()
+ s.SetNet(vnet)
api := webrtc.NewAPI(webrtc.WithSettingEngine(s))
c.pc, err = api.NewPeerConnection(*config)
if err != nil {
diff --git a/go.mod b/go.mod
index 4d64230..9c2087b 100644
--- a/go.mod
+++ b/go.mod
@@ -8,6 +8,7 @@ require (
github.com/pion/ice/v2 v2.3.8
github.com/pion/sdp/v3 v3.0.6
github.com/pion/stun v0.6.1
+ github.com/pion/transport/v2 v2.2.1
github.com/pion/webrtc/v3 v3.2.11
github.com/prometheus/client_golang v1.16.0
github.com/prometheus/client_model v0.4.0
@@ -49,7 +50,6 @@ require (
github.com/pion/rtp v1.7.13 // indirect
github.com/pion/sctp v1.8.7 // indirect
github.com/pion/srtp/v2 v2.0.15 // indirect
- github.com/pion/transport/v2 v2.2.1 // indirect
github.com/pion/turn/v2 v2.1.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect