diff --git a/e2e/Dockerfile b/e2e/Dockerfile index 5e206c6985..df6ec9eeb7 100644 --- a/e2e/Dockerfile +++ b/e2e/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.14-alpine3.11 +FROM golang:1.15-alpine3.13 RUN apk add --no-cache \ chromium \ diff --git a/go.mod b/go.mod index 1ab83ca19f..dc584fc7d4 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/onsi/gomega v1.11.0 // indirect github.com/pion/datachannel v1.4.21 github.com/pion/dtls/v2 v2.0.9 - github.com/pion/ice/v2 v2.0.17 + github.com/pion/ice/v2 v2.1.1 github.com/pion/interceptor v0.0.12 github.com/pion/logging v0.2.2 github.com/pion/randutil v0.1.0 @@ -19,5 +19,6 @@ require ( github.com/pion/transport v0.12.3 github.com/sclevine/agouti v3.0.0+incompatible github.com/stretchr/testify v1.7.0 - golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1 + golang.org/x/net v0.0.0-20210414194228-064579744ee0 + golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0 // indirect ) diff --git a/go.sum b/go.sum index 05f7fb18ee..3d46c9fe00 100644 --- a/go.sum +++ b/go.sum @@ -41,8 +41,8 @@ github.com/pion/datachannel v1.4.21 h1:3ZvhNyfmxsAqltQrApLPQMhSFNA+aT87RqyCq4OXm github.com/pion/datachannel v1.4.21/go.mod h1:oiNyP4gHx2DIwRzX/MFyH0Rz/Gz05OgBlayAI2hAWjg= github.com/pion/dtls/v2 v2.0.9 h1:7Ow+V++YSZQMYzggI0P9vLJz/hUFcffsfGMfT/Qy+u8= github.com/pion/dtls/v2 v2.0.9/go.mod h1:O0Wr7si/Zj5/EBFlDzDd6UtVxx25CE1r7XM7BQKYQho= -github.com/pion/ice/v2 v2.0.17 h1:YNkULoBhPGQeg1qZdveOdxNq2yZvC6iC30eC137fLzs= -github.com/pion/ice/v2 v2.0.17/go.mod h1:ZI/4u+8cIaENIGy9fmxkQGz0RxKn7vsZ5tXtAddh79Y= +github.com/pion/ice/v2 v2.1.1 h1:ZRb7XuOHPgXb8RO2FBfrdQ2hGcJWlz5PQUrmS9RJAfw= +github.com/pion/ice/v2 v2.1.1/go.mod h1:kV4EODVD5ux2z8XncbLHIOtcXKtYXVgLVCeVqnpoeP0= github.com/pion/interceptor v0.0.12 h1:eC1iVneBIAQJEfaNAfDqAncJWhMDAnaXPRCJsltdokE= github.com/pion/interceptor v0.0.12/go.mod h1:qzeuWuD/ZXvPqOnxNcnhWfkCZ2e1kwwslicyyPnhoK4= github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= @@ -101,8 +101,8 @@ golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1 h1:4qWs8cYYH6PoEFy4dfhDFgoMGkwAcETd+MmPdCPMzUc= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210414194228-064579744ee0 h1:iqW3Mjl/6IP9cHJC/wdiIu3lyBDMUfDElRMyFlqbtiQ= +golang.org/x/net v0.0.0-20210414194228-064579744ee0/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -116,8 +116,9 @@ golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44 h1:Bli41pIlzTzf3KEY06n+xnzK/BESIg2ze4Pgfh/aI8c= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0 h1:g9s1Ppvvun/fI+BptTMj909BBIcGrzQ32k9FNlcevOE= +golang.org/x/sys v0.0.0-20210414055047-fe65e336abe0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= diff --git a/icegatherer.go b/icegatherer.go index 31c64ee857..e071491d04 100644 --- a/icegatherer.go +++ b/icegatherer.go @@ -111,6 +111,7 @@ func (g *ICEGatherer) createAgent() error { LocalUfrag: g.api.settingEngine.candidates.UsernameFragment, LocalPwd: g.api.settingEngine.candidates.Password, TCPMux: g.api.settingEngine.iceTCPMux, + UDPMux: g.api.settingEngine.iceUDPMux, ProxyDialer: g.api.settingEngine.iceProxyDialer, } diff --git a/settingengine.go b/settingengine.go index 8091e6a287..3aa65c6ada 100644 --- a/settingengine.go +++ b/settingengine.go @@ -58,6 +58,7 @@ type SettingEngine struct { BufferFactory func(packetType packetio.BufferPacketType, ssrc uint32) io.ReadWriteCloser LoggerFactory logging.LoggerFactory iceTCPMux ice.TCPMux + iceUDPMux ice.UDPMux iceProxyDialer proxy.Dialer disableMediaEngineCopy bool } @@ -252,6 +253,13 @@ func (e *SettingEngine) SetICETCPMux(tcpMux ice.TCPMux) { e.iceTCPMux = tcpMux } +// SetICEUDPMux allows ICE traffic to come through a single UDP port, drastically +// simplifying deployments where ports will need to be opened/forwarded. +// UDPMux should be started prior to creating PeerConnections. +func (e *SettingEngine) SetICEUDPMux(udpMux ice.UDPMux) { + e.iceUDPMux = udpMux +} + // SetICEProxyDialer sets the proxy dialer interface based on golang.org/x/net/proxy. func (e *SettingEngine) SetICEProxyDialer(d proxy.Dialer) { e.iceProxyDialer = d