aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authoritchyonion <itchyonion@torproject.org>2022-12-06 15:52:59 -0800
committeritchyonion <itchyonion@torproject.org>2023-01-30 09:10:15 -0800
commita6a18c1a9b004bda644b0b790ca756af0c6b1e51 (patch)
tree59af6d39d9574366594022dbf29a4cf2f9a0ece8 /client
parentb443e99417714a6d74c1cb8c6f5746b6dbd6fe1c (diff)
downloadsnowflake-a6a18c1a9b004bda644b0b790ca756af0c6b1e51.tar.gz
snowflake-a6a18c1a9b004bda644b0b790ca756af0c6b1e51.zip
Parse ICE servers with pion/ice library function
Diffstat (limited to 'client')
-rw-r--r--client/lib/lib_test.go13
-rw-r--r--client/lib/snowflake.go11
2 files changed, 19 insertions, 5 deletions
diff --git a/client/lib/lib_test.go b/client/lib/lib_test.go
index e1b6427..93fe0ad 100644
--- a/client/lib/lib_test.go
+++ b/client/lib/lib_test.go
@@ -195,15 +195,20 @@ func TestICEServerParser(t *testing.T) {
1,
},
{
- []string{"stun:stun.l.google.com:19302", "stun.ekiga.net"},
- [][]string{[]string{"stun:stun.l.google.com:19302"}, []string{"stun.ekiga.net"}},
+ []string{"stun:stun.l.google.com", "stuns:stun.ekiga.net"},
+ [][]string{[]string{"stun:stun.l.google.com:3478"}, []string{"stuns:stun.ekiga.net:5349"}},
2,
},
{
- []string{"stun:stun.l.google.com:19302", "stun.ekiga.net"},
- [][]string{[]string{"stun:stun.l.google.com:19302"}, []string{"stun.ekiga.net"}},
+ []string{"stuns:stun.l.google.com:19302", "turn:relay.metered.ca:80"},
+ [][]string{[]string{"stuns:stun.l.google.com:19302"}, []string{"turn:relay.metered.ca:80?transport=udp"}},
2,
},
+ {
+ []string{"stun:stun1.l.google.com:19302", "stun.ekiga.net", "stun:stun.example.com:1234/path?query", "https://example.com"},
+ [][]string{[]string{"stun:stun1.l.google.com:19302"}},
+ 1,
+ },
} {
servers := parseIceServers(test.input)
diff --git a/client/lib/snowflake.go b/client/lib/snowflake.go
index c587e6d..5d19c55 100644
--- a/client/lib/snowflake.go
+++ b/client/lib/snowflake.go
@@ -37,6 +37,7 @@ import (
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/event"
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/nat"
"git.torproject.org/pluggable-transports/snowflake.git/v2/common/turbotunnel"
+ "github.com/pion/ice/v2"
"github.com/pion/webrtc/v3"
"github.com/xtaci/kcp-go/v5"
"github.com/xtaci/smux"
@@ -269,8 +270,16 @@ func parseIceServers(addresses []string) []webrtc.ICEServer {
}
for _, url := range addresses {
url = strings.TrimSpace(url)
+
+ // add default port, other sanity checks
+ parsedURL, err := ice.ParseURL(url)
+ if err != nil {
+ log.Printf("Warning: Parsing ICE server %v resulted in error: %v, skipping", url, err)
+ continue
+ }
+
servers = append(servers, webrtc.ICEServer{
- URLs: []string{url},
+ URLs: []string{parsedURL.String()},
})
}
return servers