mirror of
https://github.com/netbirdio/ice.git
synced 2026-05-22 17:10:58 -07:00
@@ -45,6 +45,7 @@ func TestRelayOnlyConnection(t *testing.T) {
|
||||
Username: "username",
|
||||
Password: "password",
|
||||
Port: serverPort,
|
||||
Proto: ProtoTypeUDP,
|
||||
},
|
||||
},
|
||||
CandidateTypes: []CandidateType{CandidateTypeRelay},
|
||||
|
||||
@@ -378,13 +378,45 @@ func (a *Agent) gatherCandidatesRelay(urls []*URL) error {
|
||||
return ErrPasswordEmpty
|
||||
}
|
||||
|
||||
locConn, err := a.net.ListenPacket(network, "0.0.0.0:0")
|
||||
if err != nil {
|
||||
return err
|
||||
TURNServerAddr := fmt.Sprintf("%s:%d", url.Host, url.Port)
|
||||
var (
|
||||
locConn net.PacketConn
|
||||
err error
|
||||
RelAddr string
|
||||
RelPort int
|
||||
)
|
||||
|
||||
if url.Proto == ProtoTypeUDP {
|
||||
locConn, err = a.net.ListenPacket(network, "0.0.0.0:0")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
RelAddr = locConn.LocalAddr().(*net.UDPAddr).IP.String()
|
||||
RelPort = locConn.LocalAddr().(*net.UDPAddr).Port
|
||||
} else {
|
||||
var (
|
||||
tcpAddr *net.TCPAddr
|
||||
tcpConn *net.TCPConn
|
||||
)
|
||||
|
||||
tcpAddr, err = net.ResolveTCPAddr(NetworkTypeTCP4.String(), TURNServerAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tcpConn, err = net.DialTCP(NetworkTypeTCP4.String(), nil, tcpAddr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
RelAddr = tcpConn.LocalAddr().(*net.TCPAddr).IP.String()
|
||||
RelPort = tcpConn.LocalAddr().(*net.TCPAddr).Port
|
||||
locConn = turn.NewSTUNConn(tcpConn)
|
||||
}
|
||||
|
||||
client, err := turn.NewClient(&turn.ClientConfig{
|
||||
TURNServerAddr: fmt.Sprintf("%s:%d", url.Host, url.Port),
|
||||
TURNServerAddr: TURNServerAddr,
|
||||
Conn: locConn,
|
||||
Username: url.Username,
|
||||
Password: url.Password,
|
||||
@@ -405,7 +437,6 @@ func (a *Agent) gatherCandidatesRelay(urls []*URL) error {
|
||||
return err
|
||||
}
|
||||
|
||||
laddr := locConn.LocalAddr().(*net.UDPAddr)
|
||||
raddr := relayConn.LocalAddr().(*net.UDPAddr)
|
||||
|
||||
relayConfig := CandidateRelayConfig{
|
||||
@@ -413,8 +444,8 @@ func (a *Agent) gatherCandidatesRelay(urls []*URL) error {
|
||||
Component: ComponentRTP,
|
||||
Address: raddr.IP.String(),
|
||||
Port: raddr.Port,
|
||||
RelAddr: laddr.IP.String(),
|
||||
RelPort: laddr.Port,
|
||||
RelAddr: RelAddr,
|
||||
RelPort: RelPort,
|
||||
OnClose: func() error {
|
||||
client.Close()
|
||||
return locConn.Close()
|
||||
|
||||
@@ -7,7 +7,7 @@ require (
|
||||
github.com/pion/mdns v0.0.3
|
||||
github.com/pion/stun v0.3.3
|
||||
github.com/pion/transport v0.8.9
|
||||
github.com/pion/turn v1.3.7
|
||||
github.com/pion/turn v1.4.0
|
||||
github.com/stretchr/testify v1.4.0
|
||||
golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24 // indirect
|
||||
|
||||
@@ -13,15 +13,12 @@ github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY=
|
||||
github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
|
||||
github.com/pion/mdns v0.0.3 h1:DxdOYd0pgwLKiDlIIxfU0qdG5iWh1Xn6CsS9vc6cMAY=
|
||||
github.com/pion/mdns v0.0.3/go.mod h1:VrN3wefVgtfL8QgpEblPUC46ag1reLIfpqekCnKunLE=
|
||||
github.com/pion/stun v0.3.2 h1:Vsy6C+bTbJKEC2TH4vHYOnRKmozNPi5FpeKv9/bX16k=
|
||||
github.com/pion/stun v0.3.2/go.mod h1:xrCld6XM+6GWDZdvjPlLMsTU21rNxnO6UO8XsAvHr/M=
|
||||
github.com/pion/stun v0.3.3 h1:brYuPl9bN9w/VM7OdNzRSLoqsnwlyNvD9MVeJrHjDQw=
|
||||
github.com/pion/stun v0.3.3/go.mod h1:xrCld6XM+6GWDZdvjPlLMsTU21rNxnO6UO8XsAvHr/M=
|
||||
github.com/pion/transport v0.8.8/go.mod h1:lpeSM6KJFejVtZf8k0fgeN7zE73APQpTF83WvA1FVP8=
|
||||
github.com/pion/transport v0.8.9 h1:3PUZULb0WZd/QNfXKKMwcUHzLR+XfNem6lF2M9UrxSU=
|
||||
github.com/pion/transport v0.8.9/go.mod h1:lpeSM6KJFejVtZf8k0fgeN7zE73APQpTF83WvA1FVP8=
|
||||
github.com/pion/turn v1.3.7 h1:/nyM2XrlZILD7KKfnh0oYEBTRG5JlbH21ibjluRoCeo=
|
||||
github.com/pion/turn v1.3.7/go.mod h1:js0LBFqMcKAlaWAXoYqNjefGI7kfJCrkCBfHGuTToXE=
|
||||
github.com/pion/turn v1.4.0 h1:7NUMRehQz4fIo53Qv9ui1kJ0Kr1CA82I81RHKHCeM80=
|
||||
github.com/pion/turn v1.4.0/go.mod h1:aDSi6hWX/hd1+gKia9cExZOR0MU95O7zX9p3Gw/P2aU=
|
||||
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
|
||||
Reference in New Issue
Block a user